你目前正处于脱机状态,正在等待 Internet 重新连接

在 Windows XP 中对基于 MS-DOS 的程序进行故障排除

针对 Windows XP 的支持已终止

Microsoft 已于 2014 年 4 月 8 日终止了针对 Windows XP 的支持。该更改已影响到您的软件更新和安全选项。 了解这一措施对于您的含义以及如何继续保持受保护状态。

有关本文的 Microsoft Windows 2000 版本,请参阅 165214
概要
本文描述如何在 Windows 中对基于 MS-DOS 的程序进行故障排除。
更多信息

测试 Ntvdm 子系统

在基于 MS-DOS 的程序出现问题时,首先要测试的是 Windows 虚拟 DOS 机 (NTVDM) 子系统。可以使用 Command.com 实用工具测试 NTVDM 子系统是否正常运行。要启动 Command.com,请按照下列步骤操作:
  1. 单击开始按钮,然后单击运行
  2. 打开框中,键入 command.com,然后单击确定
随即启动一个命令提示符窗口。如果这没有正常运行,则说明 NTVDM 子系统存在问题,应当检查下列各项:
  • 检查 SystemRoot%\System32 文件夹中的 Config.ntAutoexec.nt 文件,查看是否有非标准设置。

    使用 REM 语句注释掉除下列默认条目以外的所有条目:
    Config.nt---------dos=high, umbdevice=%SystemRoot%\System32\Himem.sysfiles=20Autoexec.nt-----------lh %SystemRoot%\System32\Mscdexnt.exelh %SystemRoot%\System32\Redirlh %SystemRoot%\System32\Dosxlh %SystemRoot%\System32\Nw16(仅当安装了 CSNW 时)lh %SystemRoot%\System32\Vwipxspx(仅当安装了 CSNW 时)						
    另一种实现方法是将 Autoexec.nt_ 和 Config.nt_ 从 Windows 光盘展开到 %SystemRoot%\System32 文件夹中。
  • 按 Ctrl+Shift+Esc 启动任务管理器,关闭所有正在运行的程序,并确保没有其他 NTVDM 进程正在运行。
  • 禁止任何程序在启动时运行。启动时,程序可以从以下两个位置运行:“启动”组,以及注册表中的 Run 和 RunOnce 行。可以按照下列步骤检查这些位置:
    1. “启动”组是本地硬盘上的文件夹。它们的位置是:
      • %SystemRoot%\Profiles\user_name\“开始”菜单\程序
      • %SystemRoot%\Profiles\Default user\“开始”菜单\程序
    2. Run 和 RunOnce 行位于注册表中的以下注册表项下:
      HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\
  • 检查 %SystemRoot%\System32 文件夹中的 NTVDM 系统文件。检查下列文件,并通过检查大小和日期确保它们的版本是正确的:
    Ntio.sysNtdos.sysNtvdm.exeNtvdm.dll(仅限于 Windows NT 3.1)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 中无法使用:
  • 支持除任务切换 API(应用程序编程接口)函数以外的所有 MS-DOS 函数。
  • 不支持块模式设备驱动程序。不支持块设备,因此不支持处理块设备和 SETDPB 函数的 MS-DOS I/O 控制 (IOCTL) API。
  • 中断 10 函数 1A 返回 0;所有其他函数都被传递到只读内存 (ROM)。
  • 不支持处理禁用磁盘访问的中断 13 调用。
  • 中断 18 (ROM BASIC) 生成一条说明不支持 ROM BASIC 的消息。
  • 中断 19 不重新启动计算机,但是会干净地关闭当前的虚拟 DOS 机 (VDM)。
  • 不支持处理 DOSKEY 程序呼出 (AX = 4800) 的中断 2F。
  • 不支持 Microsoft CD-ROM 扩展 (MSCDEX) 函数 2、3、4、5、8、E 和 F。
  • x86 计算机上的 16 位 Windows 子系统支持增强模式的程序;但是,它不支持 16 位的虚拟设备驱动程序 (VxD)。非 x86 的计算机上的子系统模拟了 Intel 40486 指令集,这使得计算机能够在精简指令集计算机 (RISC) 上运行增强模式的程序,如 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 文件。为此,请按照下列步骤操作:
    1. 创建这些文件,并在除 %SystemRoot%\System32 以外的文件夹中使用 .nt 扩展名保存它们(通常将这些文件保存在与该程序相同的文件夹中)。
    2. 右键单击桌面,指向新建,然后单击快捷方式
    3. 在“请键入项目的位置”框中,键入您要运行的文件的完整路径,然后单击下一步
    4. 在“键入该快捷方式的名称”框中,键入快捷方式的名称,然后单击完成。这会在桌面上创建一个新的快捷方式。
    5. 右键单击该新快捷方式,然后单击属性
    6. 程序选项卡上,单击 Windows 打开对话框,以便输入 Autoexec 和 Config 文件的路径。
    7. 键入所创建的文件的完整路径,然后在这两个对话框中单击确定
    单击此图标以运行为该程序指定的 Autoexec 和 Config 文件。这些设置要遵循与为基于 MS-DOS 的程序所列出的限制相同的限制。
程序的属性中还有其他设置。如果您的程序无法正常运行,请检查所有选项卡并确保程序设置符合制造商的规范。如果该程序仍无法正常运行,请与该程序的供应商联系,以确保 Windows 支持该程序。

有关其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
171940MS-DOS 应用程序 I/O 操作导致软盘驱动器访问
156687 CONFIG.NT 或 AUTOEXEC.NT 中的项可能导致 NTVDM 错误
102418 NTVDM 错误:驱动器中没有磁盘
142026 Err:运行 16 位或 DOS 应用程序时出现“Hidden console of WOW VDM”(WOW VDM 控制台隐藏)
本文中提到的第三方产品由 Microsoft 以外的其他公司提供。对于这些产品的性能或可靠性,Microsoft 不作任何暗示保证或其他形式的保证。
apps msdos application
属性

文章 ID:314106 - 上次审阅时间:10/24/2005 10:49:00 - 修订版本: 2.1

  • Microsoft Windows XP Home Edition
  • Microsoft Windows XP Professional Edition
  • kbinfo kbtshoot kbregistry kbenv KB314106
反馈