Q

現在,Windows 98とWindows 2000が混在したネットワークを管理しています。ネットワークの拡張に伴い,一時的に各マシンに静的ルーティングを設定することを考えています。Windows 2000のrouteコマンドでは,-pオプションを用いることで,再起動後も有効な静的ルーティングの設定ができることを確認しています。しかし,Windows 98のrouteコマンドには-pオプションがなく,手動で静的ルーティングの設定をしても,再起動するたびに設定が消えてしまい困っています。何かよい方法はないでしょうか?

A

ご質問の通り,Windows 98のrouteコマンドには,Windows 2000などのNT系OSにある-pオプションがありません。Windows 95やMeでも同様です。このため,Windows 9x系のOSでは,Windows 2000と同様の方法では静的ルーティングを設定できません。ただし,OSの起動のたび(再起動時を含む)に静的ルーティングが有効になるよう設定することで,再起動しても有効にできます。

 OS起動時に静的ルーティングの設定を有効にする方法はいくつかあります。1つはレジストリを変更する方法です。Windows 98では,HKEY_LOCAL_MACHINE\Software\Microsoft\
Windows\CurrentVersion\RunServices(もしくはRunServicesOnce)に文字列型のキーを追加することで,OSの起動時に任意のコマンドを実行することができます(図1)。


△ 図をクリックすると拡大されます
図1●Windows 98における静的ルーティングの設定例

 図1の「静的ルーティング」のように追加する文字列型のキーの名前は何でも構いません。そのキーのデータに実行したいコマンドを入力します。例えば「192.168.1.0/24」あてのパケットを「192.168.10.1」にルーティングしたい場合には,「route.exe add 192.168.1.0 192.168.10.1」を指定します。

 もう1つは,Windows 98(Internet Explorer 4.0以降)で利用可能な「タスク」を使った方法です。routeコマンドを実行するタスクを作成した上で,そのタスクの実行タイミングとして,「システム起動時」を設定することで,OSの起動時にコマンドを実行することが可能となります。「システム起動時」を指定した「タスク」の実行タイミングは,RunServicesレジストリで設定したコマンドの後になります。

 routeコマンドはコマンド・ラインのプログラムのため,どちらの方法を利用しても,routeコマンドが実行される際に一瞬ですがコマンド・プロンプトのウインドウが画面上に現れます。これを抑止することは残念ながらできません。

Autoexec.batに記述してもダメ
 Windows 98では,マシン起動時にC:\Autoexec.batの内容が実行されます。これはOS起動時にコマンドを自動実行させるMS-DOS時代の機能で,Windows 98でも互換性維持などの理由で実装されています。そのため,ここにrouteコマンドを実行しても,同様の自動設定を実現できそうに思えますが,実際にはここにrouteコマンドを設定してもうまく動作しないので注意して下さい。

 これは,C:\Autoexec.batが実行される時点では,まだWindows 98のMS-DOS互換部分しか機能していないためです。MS-DOSにはネットワーク機能はないため,この時点でrouteコマンドを実行しても正しく動作しません

高橋基信