本文將告訴您,如何疑難排解 Windows 中的 MS-DOS 程式。
測試 Ntvdm 子系統
當 MS-DOS 程式發生問題時,請先測試 Windows 虛擬 DOS 機器 (NTVDM,Windows Virtual
DOS Machine) 子系統。您可以使用 Command.com 公用程式,來測試 NTVDM 子系統是否正常運作。如果要啟動
Command.com,請執行下列步驟:
- 按一下 [開始] 按鈕,再按一下 [執行]。
- 在 [開啟] 方塊中,輸入 command.com,然後按一下 [確定]。
這樣就會開啟命令提示字元視窗。如果這個命令沒有正常地運作,就表示 NTVDM 子系統發生問題,請檢查下列項目:
- 檢查 SystemRoot%\System32 資料夾中的 Config.nt 及 Autoexec.nt 檔案是否有非標準的設定。
使用 REM 陳述式標註所有項目 (除了下列預設項目之外):
Config.nt
---------
dos=high, umb
device=%SystemRoot%\System32\Himem.sys
files=20
Autoexec.nt
-----------
lh %SystemRoot%\System32\Mscdexnt.exe
lh %SystemRoot%\System32\Redir
lh %SystemRoot%\System32\Dosx
lh %SystemRoot%\System32\Nw16 (only if CSNW is installed)
lh %SystemRoot%\System32\Vwipxspx (only if CSNW is installed)
或者,您也可以執行另一種方法,就是將 Windows 光碟中的 Autoexec.nt_ 及 Config.nt_ 展開至
%SystemRoot%\System32 資料夾中。 - 按下 CTRL+SHIFT+ESC 以啟動「工作管理員」,然後關閉所有執行中的程式,並且確定沒有其他 NTVDM
處理程序正在執行。
- 防止所有程式在啟動時執行, 只讓下列三種位置中的程式在啟動時執行:啟動群組、登錄中 Run 和 RunOnce
行,以及 Win.ini 檔案中的 "run=" 和 "load=" 行。您可以依照下列檢查這些位置:
- 「啟動」群組是本機硬碟上的資料夾,位於下列位置:
- %SystemRoot%\Profiles\user_name\Start
menu\Programs
- %SystemRoot%\Profiles\Default user\Start
menu\Programs
- Run 及 RunOnce 行位於登錄中的下列登錄機碼下:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\
- 您可以使用「記事本」編輯 Win.ini 檔案。Win.ini 檔案位於 %SystemRoot%
資料夾中。
- 檢查 %SystemRoot%\System32 資料夾中的 NTVDM 系統檔案。
檢查下列檔案,並查看大小及日期,以確認檔案的版本是正確的:
Ntio.sys
Ntdos.sys
Ntvdm.exe
Ntvdm.dll (Windows NT 3.1 only)
Redir.exe
- 與 NTVDM 子系統相關的登錄項目包括:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session
Manager\Environment
這個機碼會儲存 Config.sys 及 Autoexec.bat 檔案中的環境變數,以便在 Windows 中使用。
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\
VirtualDeviceDrivers
這個機碼會儲存 NTVDM 工作階段中所使用的裝置驅動程式。安裝裝置驅動程式時,Windows
安裝程式就會建立這些項目。
檢查特定程式的問題
下列函數無法在 Windows XP 中執行:
- 支援所有 MS-DOS 函數,除了工作切換 API (應用程式發展介面) 函數以外。
- 不支援封鎖模式裝置驅動程式。由於不支援封鎖裝置,因此也不支援可以處理封鎖裝置的 MS-DOS I/O 控制
(IOCTL) API 及 SETDPB 函數。
- 插斷 10 函數 1A 傳回 0;所有其他函數是傳送至唯讀記憶體 (ROM)。
- 不支援可以處理已禁止磁碟存取的插斷 13 呼叫。
- 插斷 18 (ROM BASIC) 會產生說明不支援 ROM BASIC 的訊息。
- 插斷 19 不會重新啟動電腦,但是可以完全關閉目前的虛擬 DOS 機器 (VDM)。
- 不支援可以處理 DOSKEY 程式圖說文字 (AX = 4800) 的插斷 2F。
- 不支援 Microsoft CD-ROM Extensions (MSCDEX) 函數 2、3、4、5、8、E 及
F。
- x86 電腦上的 16 位元 Windows 子系統支援增強模式的程式,但是,並不支援 16 位元的虛擬裝置驅動程式
(VxD)。非 x86 電腦上的子系統會在精簡指令集電腦 (RISC) 上模擬 Intel 40486 指令集,而此指令集可以讓電腦執行增強模式的程式,例如
Microsoft Visual Basic。
這表示 Windows 不支援需要無限制存取硬體的 16 位元程式。如果您的程式要求無限制存取硬體,就無法在 Windows
NT、Windows 2000 或 Windows XP 中運作。
接著,您可以檢查 Autoexec.nt 及 Config.nt
檔案的設定是否正確。請務必嘗試使用本文中先前所列的預設設定。有些程式需要特殊的設定或驅動程式,才能在 Config.sys 或 Autoexec.bat
檔案中執行。在這種情況中,當您啟動程式時,可以選擇兩個選項來初始化這些檔案:
- 在 %SystemRoot%\System32 資料夾的 Config.nt 及 Autoexec.nt
檔案中輸入這些行。
- 建立啟動這個程式時所要執行的新 Config 及 Autoexec 檔案。如果要執行這項操作,請依照下列步驟執行:
- 建立檔案,並且以 .nt 做為副檔名,將檔案儲存在 %SystemRoot%\System32
資料夾以外的資料夾中 (這些檔案通常會儲存在與程式相同的資料夾中)。
- 在桌面上按一下滑鼠右鍵,指向 [新增],再按一下 [捷徑]。
- 在 [輸入項目的位置] 方塊中,輸入您想要執行的檔案的完整路徑,然後按一下 [下一步]。
- 在 [輸入這個捷徑的名稱] 方塊中,輸入捷徑的名稱,再按一下 [完成]。如此就可以在桌面上建立新的捷徑。
- 用滑鼠右鍵按一下新的捷徑,再按一下 [內容]。
- 在 [程式] 索引標籤上,按一下 [Windows],開啟指向 Autoexec 及 Config 檔案路徑的對話方塊。
- 輸入您所建立的檔案的完整路徑,然後在兩個對話方塊中按一下 [確定]。
按一下這個圖示,就可以執行為程式所指定的 Autoexec 及 Config 檔案。這些限制會受到先前所列與
MS-DOS 程式相同的限制。
程式的內容中還有其他的設定。如果您的程式無法正確地運作,請檢查所有的索引標籤,並確定程式設定均設定為符合製造商的規格。
如果程式仍然無法運作,請聯絡程式的廠商,以確認 Windows 是否支援程式。
如需詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
171940?
(http://support.microsoft.com/kb/171940/
)
MS-DOS application I/O operations cause floppy drive access
156687?
(http://support.microsoft.com/kb/156687/
)
Entries in CONFIG.NT or AUTOEXEC.NT may cause NTVDM errors
102418?
(http://support.microsoft.com/kb/102418/
)
NTVDM error:There is no disk in the drive
142026?
(http://support.microsoft.com/kb/142026/
)
Err:'Hidden console of WOW VDM' running 16-bit or DOS app
本文提及的協力廠商產品是由與 Microsoft
無關的獨立廠商所製造。Microsoft 不以暗示或其他方式,提供與這些產品的效能或可靠性有關的保證。