その他
あまり知られていない winstart.bat バッチファイル
The little-known winstart.bat batch file (devblogs.microsoft.com)
要約
Windows 3.1およびWindows 95時代に存在した`winstart.bat`という、あまり知られていないバッチファイルについて解説しています。このファイルは、MS-DOSの`autoexec.bat`とは異なり、Windowsプログラム専用のTSR(Terminate and Stay Resident)プログラムをロードするために使用されました。これにより、MS-DOSアプリケーションとWindowsアプリケーションで異なる環境設定が可能でした。
全文翻訳
読者のOtul Osanは、C:\AUTOEXEC.BATと比較した場合のC:\WINDOWS\WINSTART.BATの使用ケースと、システム起動中のいつ起動するかを知りたいと考えています。Windows 95では、Windowsディレクトリにwinstart.batファイルを作成できました。起動中、仮想マシンマネージャーが初期化され、「システム仮想マシン」(「システムVM」)が作成されます。これは、すべてのWindowsプログラムが実行される仮想マシンです。しかし、その仮想マシンでユーザーモードカーネルを実行する前に、仮想マシンマネージャーはwinstart.batが存在すればそれを実行します。
図で示すと以下のようになります。
まず、MS-DOSとコマンドプロンプトを起動します。(注:すべての図は、議論に関連しない多くの詳細を省略しており、縮尺通りではありません。)
MS-DOS
「Stuff」というラベルのボックスは、割り込みベクタテーブルやBIOSデータエリアのような、低アドレスにあるランダムなものをすべて格納する場所です。
次に、command.comがautoexec.batを実行し、TSRをインストールする場合があります。
MS-DOS TSR1
そしてWindowsが起動し、仮想マシンマネージャーを初期化します。システムは現在、保護モードで実行されており、v86モードで実行される仮想マシンがあり、その仮想マシンは、仮想マシンマネージャーが引き継いだ時点でのリアルモードで実行されていたもので初期化されます。
v86モード MS-DOS TSR1
仮想マシンマネージャー
MS-DOSを斜線で消したのは、仮想マシンマネージャーがファイルシステムの責任を引き継ぎ、MS-DOSのリアルモードファイルシステムをシャットオフしたためです。この時点で、仮想マシンマネージャーは仮想マシン内でwinstart.batを実行し、別のTSRをインストールする可能性があります。
v86モード MS-DOS TSR1 TSR2
仮想マシンマネージャー
そして、Windowsアプリケーションを担当するユーザーモードカーネルを開始します。このユーザーモードカーネルは、仮想マシンを保護モードに切り替え、ほとんどの人がWindowsとして認識しているものを実行し始めます。
v86モード MS-DOS プロテクトモード(リング3) GUI stuff
仮想マシンマネージャー
そして、Windows GUIからコマンドプロンプトを開くことを決定します。これは、2番目の仮想マシンを作成することを意味します。
v86モード MS-DOS プロテクトモード(リング3) GUI stuff
仮想マシンマネージャー
v86モード MS-DOS COMMAND.COM
注意:command.comを実行している仮想マシンは、Windowsが起動したときのシステムのコピーです。²そのため、TSR1(autoexec.batから)は含まれますが、TSR2(winstart.batから)は含まれません。コマンドプロンプト仮想マシンにTSRをインストールすると、以下のようになります。
v86モード MS-DOS プロテクトモード(リング3) GUI stuff
仮想マシンマネージャー
v86モード MS-DOS TSR1 TSR3 COMMAND.COM
さて、これでピースがどのように組み合わさるかがわかったので、winstart.batの目的を逆算できます。winstart.batバッチファイルの意図された目的は、Windowsプログラムにのみ適用されるTSRをインストールできるようにすることです。たとえば、Windowsプログラムをサポートするためにネットワークドライバーをインストールする場合があります。MS-DOSプログラムのネットワーキングには関心がなく、それらのために従来のメモリを解放したい場合、またはそれらのドライバーが複数の仮想マシンで実行することをサポートしていないため、システムVMにそれらを取り込み、MS-DOSプログラムではそれらを諦めるという理由で、グローバルにインストールする代わりにこのオプションを選択するかもしれません。
私が興味深いと思うのは、これを最初に発見したほとんどの人が、これがWindows 95の機能だと言うことです。しかし実際には、これはWindows 3.1(そしておそらくWindows 3.0)の機能です。Windows 3.1リソースキットの263ページに文書化されています。そのページには、TSRを起動する3つの方法と、それらが異なる仮想マシンでどのように表示されるかを示す便利な表もあります。(この表では、「仮想マシンで表示されるTSR」は実際には「非Windows仮想マシンで表示されるTSR」を意味しますが、ドキュメントでは「仮想マシン」という用語はWindows自体を実行する仮想マシンではなく、単に「Windows」と呼ぶ非Windows仮想マシンのみを指すという慣習を取っています。)
| TSRがロードされる場所 | Windowsで表示されるか? | 仮想マシンで表示されるか? |
|---|---|---|
| MS-DOS | はい | はい、すべての仮想マシン |
| WINSTART.BAT | はい | いいえ |
| 単一の仮想マシン | いいえ | その仮想マシンのみ |
¹考えてみてください:オペレーティングシステムを起動し、その周りに別のオペレーティングシステムを起動したので、元のオペレーティングシステムは、セカンドオペレーティングシステムによって制御される仮想マシン内で実行されていました。それは、家を出て、通りを歩き、ブロックの途中で、自分が映画スタジオのセットの中を歩いていることに気づくようなものです。
²実際には、Windowsが起動したときのシステムのコピーではありません。むしろ、システムVMのコピーですが、Windowsが起動したときに存在した部分のみです。これがどのように機能したかは、脚注で説明するには複雑すぎます。いつか議論するかもしれません。
私はこれがどのように発見されたかを覚えていませんが、何年も前に、私が構築した商用のWindows 3時代のアプリケーションでwinstart.batを使用しました。そのアプリケーションは、管理者がWindows PCをロックダウンして、ユーザーが設定を破壊できないようにするものでした。私はwinstartを使用して、ヘッドレスDOS実行可能ファイルをロードし、それが私たちの維持費が支払われたかどうかを迅速にチェックするようにしました。支払われていれば、アプリケーションは終了しました。支払われていなかった場合、乱数を生成し、その数がたとえば9であれば、タイトな永久ループを実行してマシンをロックアップしました。これにより、PCは問題が発生したように見えました...続きを読む
私はこれがどのように発見されたかを覚えていませんが、何年も前に、私が構築した商用のWindows 3時代のアプリケーションでwinstart.batを使用しました。そのアプリケーションは、管理者がWindows PCをロックダウンして、ユーザーが設定を破壊できないようにするものでした。私はwinstartを使用して、ヘッドレスDOS実行可能ファイルをロードし、それが私たちの維持費が支払われたかどうかを迅速にチェックするようにしました。支払われていれば、アプリケーションは終了しました。支払われていなかった場合、乱数を生成し、その数がたとえば9であれば、タイトな永久ループを実行してマシンをロックアップしました。これにより、PCは問題が発生したように見えました。考え方は、クライアントが私たちに電話してコンピューターのトラブルシューティングを行うだろう、そして私たちがサービスを提供する前に、未払いの料金の支払いを要求することでした。影響を受けたクライアントは1社だけでした。クライアントの支払い期日のスプレッドシートがあったので、電話がかかってきたときに、それが「Groundhog」アプリによるロックアップの可能性かどうかを知ることができました。ある日、クライアントの支払いが遅れ、期日が来ました。一日中待ちましたが、電話はありませんでした。アプリにバグがあるかもしれないと思いました。案の定、午後4時にクライアントから電話がありました。ボスのシステムがロックアップしていました(Groundhogはボスのシステムにのみインストールしていたため、会社全体は通常通り機能していました)。もちろん、残高が未払いであることを伝え、支払いが完了次第駆けつけると伝えました。彼らは小切手を準備すると同意しました。私たちは急いでそこに行き、小切手を受け取り、ボスのオフィスから全員を退去させ、Groundhogの締め切りをリセットしました。すべてうまくいきました。面白いのは、クライアントが午前中からロックアップが始まっており、一日中Microsoftサポートと電話で話していたが、彼らはその断続的な問題が何であるかを全く理解できなかったと私たちに言ったことです。クライアントは、サポートがそれを修正してくれることを望んでおり、私たちに電話して支払う必要がないようにしていました。彼は私たちを無視するつもりでした。サポートはwinstart.batについて全く知りませんでした。私たちはただ笑って立ち去りました。後に、そのような技術は何年も前にIBM(および他の会社も同様に)によって使用されており、違法であったことを知りました。続きを読む
この情報を使うことはないと思いますが、投稿してくれて本当にありがとうございます。あなたは魅力的なトピックをカバーしており、私が子供の頃から使用してきたプラットフォームの基盤が何であったかを知るのは素晴らしいことです。どうか、これらの投稿をやめないでください!そして、脚注2についてはいつか議論してください😁
それが欲しい何かを知っているのだろうか。
https://github.com/PluMGMK/vbesvga.drv/blob/master/AUXSTACK.ASM
問題は、Windowsがint10hに非常に小さなスタックを提供しており、最新のint 10hはグラフィックモードで最大1024バイトを必要とすることです。
関連ニュースとして、Otul Osanが質問したことを責めることはできません。インターネットの海...