
Microsoftのベテランエンジニア、Raymond Chen氏のブログThe Old New Thingにて、Windowsの古いスタートアップ機構「WINSTART.BAT」について詳しい解説が行われました。
WINSTART.BATは現代のWindowsではほぼ忘れられた存在ですが、かつてMS-DOS時代の制約をうまく回避するための「賢い裏技」として機能していたものです。
WINSTART.BATが担っていた役割
WINSTART.BATは、Windows 95の起動時に実行される特別なバッチファイルで、TSR(Terminate-and-Stay-Resident)プログラムをWindows専用に読み込むための仕組みでした。
通常、AUTOEXEC.BATで読み込んだTSRは、Windowsが作るMS-DOS仮想マシン(VM)にも引き継がれます。しかしWINSTART.BATは、Windowsの「System VM」だけにTSRを読み込むという点が大きな特徴でした。
Windows 3.x〜95は、MS-DOS環境を複数の仮想マシンとして扱っていました。そのため、どのタイミングでTSRを読み込むかによって、どの環境で利用できるかが変わります。
AUTOEXEC.BAT
- MS-DOS起動時に実行
- 読み込んだTSRはすべてのMS-DOS VMに引き継がれる
- Windows側でも利用可能
WINSTART.BAT
- WindowsのVMM(Virtual Machine Manager)がSystem VMを作成した直後に実行
- 読み込んだTSRはWindows専用
- MS-DOS VMには引き継がれない
つまりWINSTART.BATには、Windowsだけが必要とするドライバーやユーティリティを、MS-DOS側に余計な負荷をかけずに読み込めるというメリットがありました。
TSRを起動する3つの方法と有効範囲の違いは以下の通りです。
| どこでTSRがロードされたか | TSRがWindowsから見える? | TSRがMS-DOS仮想マシンから見える? |
|---|---|---|
| From MS-DOS(AUTOEXEC.BAT) | Yes | Yes(全部の仮想マシンから) |
| From WINSTART.BAT | Yes | No |
| In a single virtual machine(MS-DOSウィンドウ内で読み込む) | No | その仮想マシンからだけ |
なぜこの仕組みが不要になったのか
現代のWindowsはMS-DOS互換環境を仮想マシンとして扱う必要がなくなり、TSRという概念自体も過去のものになりました。そのため、WINSTART.BATのようなWindowsとMS-DOSの境界をうまく扱うための工夫は、歴史的役割を終えています。
まとめ
WINSTART.BATは、WindowsがMS-DOSと共存していた時代ならではの賢い仕組みでした。AUTOEXEC.BATとは異なるタイミングでTSRを読み込むことで、Windows専用の常駐プログラムを効率よく扱うための仕組みとして機能していたのです。
今では不要となった古い機能ですが、Windowsの内部構造がどのように進化してきたかを知るうえで興味深いトピックと言えます。
