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専用に読み込むための仕組みでした。MS-DOS時代に使われていたTSRプログラムは、メモリ上に常駐し、ホットキーや特定のトリガーで再び呼び出せる小型ユーティリティのことです。通常、AUTOEXEC.BATで読み込んだTSRは、Windowsが作るMS-DOS仮想マシン(VM)にも引き継がれます。しかしWINSTART.BATは、Windowsの「System VM」だけにTSRを読み込むという点が大きな特徴でした。Windows 3.x〜95は、MS-DOS環境を複数の仮想マシンとして扱っていました。そのため、どのタイミングでTSRを読み込むかによって、どの環境で利用できるかが変わります。AUTOEXEC.BATMS-DOS起動時に実行読み込んだTSRはすべてのMS-DOS VMに引き継がれるWindows側でも利用可能WINSTART.BATWindowsの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)YesYes(全部の仮想マシンから)From WINSTART.BATYesNoIn 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の内部構造がどのように進化してきたかを知るうえで興味深いトピックと言えます。