Windows 98 に静的ルーティングを設定しても再起動するたびに設定が消えてしまう

対象プラットフォーム

質問

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

何かよい方法はないでしょうか?

回答

ご質問の通り、Windows 98 (以下、Windows 95 や Me でも同じです) の route コマンドには、Windows 2000 などの Windows NT 系 OS にある -p オプションがありません。そのため、Windows 2000 と同様の方法では、静的ルーティングの設定を行なうことができません。
しかし、方法はあります。Windows 98 では、

HKEY_LOCAL_MACINE\Software\Microsoft\Windows\CurrenVersion\RunServices (もしくは RunServicesOnce )

に文字列型のキー (名前は何でも構いません) を追加して、値として起動したいコマンドを設定することで、OS の起動時に任意のコマンドを実行することが可能です。そのため、ここに図 1 のように route コマンドを設定することで、OS の起動時に毎回 route コマンドを実行して、静的ルーティングの設定を行なうことが可能になります。

図 1 : 静的ルーティングの設定例

レジストリ エディタ


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

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

Autoexec.bat に記述してもダメ

Windows 98 では、マシン起動時に C:\Autoexec.bat の内容が実行されます。
これは MS-DOS 時代に OS 起動時にコマンドを自動実行させるための機能で、Windows 98 でも互換性維持などの理由で実装されています。そのため、ここに route コマンドを実行しても、同じ機能を実行できそうに見えますが、実際にはここに route コマンドを設定してもうまく動作しません。 これは、C:\Autoexec.bat が実行される時点では、まだ Windows 98 の MS-DOS 互換部分しか機能していないためになります。MS-DOS にはネットワーク機能はないため、この時点で route コマンドを実行しても正しく動作しません。

注記・補足

  1. 本文書は、日経 Windowsプロ 2002 年 11 月号の「トラブル解決 Q&A コーナー」に掲載された「Windows 98 に静的ルーティングを設定しても再起動するたびに設定が消えてしまう」の草稿を有志の方の手により HTML 化して掲載しているものです。

Copyright (C) 1998-2009 TAKAHASHI, Motonobu
Last update: 2003-01-22 21:51:23 JST
webmaster@monyo.com