
問題:
約 1 週間前、XP インストールの NTVDM が壊れました。
症状:
最初の症状は、自動実行バッチ ファイル中に実行される 16 ビット実行ファイルがハングし、ntvdm.exe
強制終了されるまで CPU 使用率が 100% で固定され、強制終了された時点でバッチ ファイルは実行を継続します (ただし、実行ファイルが実行するはずだった作業は実行されません)。次の症状は、シャットダウン バッチ スクリプトの一部として実行される別の 16 ビット実行ファイルがハングし、スクリプトが失敗するというものでした。
興味深いことに、彼らは時々作業は30%程度です。言い換えれば、プログラムが(走るダイアログを10回実行すると、2~4回は正常に実行され、残りの時間はハングアップする可能性があります。これは主に、何かを印刷するなどの単純なプログラムで発生し、またはなどのUIを備えた複雑なプログラムでは発生しませedit.com
んcommand.com
。いつもハングします。非常に単純なプログラムをいくつか選択します (例: crlf.com
: 578 バイト、ret.com
: 1 バイトなど)。いつも問題なく実行され、戻ってくるようです。
テスト:
いくつかのテストでは、問題は NTVDM 自体にあり、特定の実行ファイルだけにあるわけではないことが示されています (最近まで問題なく動作していました)。たとえば、を実行するとedit.com
コンソールが開き、エディターが表示されますが、キーボードには反応しないため、強制終了する必要があります。実際、実行してもcommand.com
機能しません。コンソールが開き、プロンプトが表示され、その後は反応せずにそのままになります。
関連する NTVDM ファイル (および多数の他の OS ファイル) をすべて確認しましたが、すべて正しいです。関連するレジストリ エントリもいくつか確認しましたが、すべて正常です。プログラムは他の XP インストールでは正常に動作します (およびも同様に動作するためcommand.com
、驚くことではありedit.com
ません)。したがって、問題はその特定のマシンにあります。NTVDM が動作しなくなってから環境は変更されていませんが、とにかく確認したところ、明らかに問題があるものはありません。LFN名のない既存のディレクトリをtemp
指しtmp
、null などの壊れた変数はなく、path
長いですが、しばらく前からこの状態です。
検証されたファイル:ntd*, ntv*, dos*, redir.exe, Mscdexnt.exe, *.sys
レジストリエントリが検証されました: *\Software\Microsoft\Command processor, *ControlSet*\Control\WoW
、*\Software\Microsoft\Windows NT\CurrentVersion\WOW*
NTVDM および 16 ビット アプリは、問題のマシンのセーフ モードでは正常に動作します。ハングするのは通常モードの場合のみです。
質問:
これらの症状を引き起こすような方法で NTVDM を破壊する可能性のあるものを誰か思いつきますか?
(明確に言うと、これはよくある間違いではありません「NTVDM CPU が不正な命令に遭遇しました。」また、Dosbox やその他の VM ソフトウェアの使用は推奨されません。これは該当せず、さらに、問題のプログラムは以前は動作していましたが、Windows 独自の 16 ビット プログラムは動作しないのは言うまでもありません。