アカウント名:
パスワード:
32bitのコマンドプロンプトにANSI.SYSなんて組み込めたっけ?32bitWindowsのコマンドプロンプトでDOSアプリを実行すると、COMMAND.EXEが走ってAUTOEXEC内に記述したANSI.SYSが入るけど、その環境では32bitコンソールアプリは動作しない。64bitWindowsだと、そもそもDOS窓が無いからANSI.SYSは入れ様が無いって状況だったかと。
既にレスが付いてますが、NT系で起動するのはCmd.exeをシェルとする「コマンドプロンプト」であって、厳密には「DOS窓」ではありません。(混同されてる事が多いですが)Cmd.exeは、機能が強烈に強化されているけれど、直接DOSアプリを起動する能力は有りません。代わりに、32bitOS限定でシームレスに仮想86モードで動作するNTVDM環境に移行し、COMMAND.COM経由でDOSアプリを実行する能力が有ります。この際にCOMMAND.COMが自動的にWindowsディレクトリにあるAUTOEXEC.BATを実行するので、そこでDOS用ドライバを組み込むことが出来ます。これが、正確な「DOS窓」です。より厳密には、Win9x系環境で起動する仮想DOS環境をDOS窓と呼ぶべきかも知れませんが。//9x系仮想DOSはVxDでフック出来たけど、NT系ドライバで出来るのかな?
64bit環境には、仮想86モードが無いのでネイティブでDOSアプリを実行する機能が有りません。(仮想マシンやエミュレータが必須)Cmd.exeをシェルにする「コマンドプロンプト」は32bitアプリ(多分)なので、64bit環境でも使えます。
余談ですが、EXEファイルは、DOS用実行モジュールとWindows用実行モジュールを混在出来ます。Windows環境ではDOS用モジュール(通常はWindowsで無いと動作しない旨のエラーを出すだけ)は無視されます。ま、DOS/Windows両用EXEなんて普通は見かけませんが。
//追加:割り込みはカーネルモードドライバでフック出来るから、判定基準にならない
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
アレゲは一日にしてならず -- アレゲ研究家
ANSI.SYS (スコア:2)
32bitのコマンドプロンプトにANSI.SYSなんて組み込めたっけ?
32bitWindowsのコマンドプロンプトでDOSアプリを実行すると、COMMAND.EXEが走ってAUTOEXEC内に記述したANSI.SYSが入るけど、その環境では32bitコンソールアプリは動作しない。
64bitWindowsだと、そもそもDOS窓が無いからANSI.SYSは入れ様が無いって状況だったかと。
-- Buy It When You Found It --
Re: (スコア:1)
もう少し詳しく解説願えますか。
----------------------------------
私自身は wow64;;https://ja.wikipedia.org/wiki/WOW64 で dos 窓も動くと解釈しています、。 実際私は 64bit Win7 使いですが、cmd.exe を日常的に使っています。32bit mingw で下のような動作をしています。
//@@
#include
int inStt;
static int* pInStt=&inStt;
int main(){
printf("%x", (long int)(pInStt+0x1ffffffff0));
return 0;
}
//@@@
//copy __tmp tmp.cpp /y
//gcc tmp.cpp C:\M
Re:ANSI.SYS (スコア:2)
既にレスが付いてますが、NT系で起動するのはCmd.exeをシェルとする「コマンドプロンプト」であって、厳密には「DOS窓」ではありません。(混同されてる事が多いですが)
Cmd.exeは、機能が強烈に強化されているけれど、直接DOSアプリを起動する能力は有りません。
代わりに、32bitOS限定でシームレスに仮想86モードで動作するNTVDM環境に移行し、COMMAND.COM経由でDOSアプリを実行する能力が有ります。
この際にCOMMAND.COMが自動的にWindowsディレクトリにあるAUTOEXEC.BATを実行するので、そこでDOS用ドライバを組み込むことが出来ます。これが、正確な「DOS窓」です。
より厳密には、Win9x系環境で起動する仮想DOS環境をDOS窓と呼ぶべきかも知れませんが。
//9x系仮想DOSはVxDでフック出来たけど、NT系ドライバで出来るのかな?
64bit環境には、仮想86モードが無いのでネイティブでDOSアプリを実行する機能が有りません。(仮想マシンやエミュレータが必須)
Cmd.exeをシェルにする「コマンドプロンプト」は32bitアプリ(多分)なので、64bit環境でも使えます。
余談ですが、EXEファイルは、DOS用実行モジュールとWindows用実行モジュールを混在出来ます。Windows環境ではDOS用モジュール(通常はWindowsで無いと動作しない旨のエラーを出すだけ)は無視されます。
ま、DOS/Windows両用EXEなんて普通は見かけませんが。
//追加:割り込みはカーネルモードドライバでフック出来るから、判定基準にならない
-- Buy It When You Found It --
Re:ANSI.SYS (スコア:1)
完全に混同してました。皆様、丁寧な解説ありがとうございました。