处理WIN7下无法运行16位DOS程序故障的方法 下载本文

内容发布更新时间 : 2024/11/20 14:20:48星期一 下面是文章的全部内容请认真阅读。

处理WIN7下无法运行16位DOS程序故障的方法

在Windows 2000/XP/VISTA/7下运行16位MS DOS程序时,可能会遇到“Config.nt The system file is not suitable for running MS-DOS and Microsoft Windows applications”(Config.nt 系统文件不适用于运行 MS-DOS 与 Microsoft Windows 应用程序)错误信息,然后只能点击关闭结束程序,下面介绍几种解决问题的方法以供参考。

本人在实际使用过程中遇到了这样的情况,初步怀疑是WIN7为了安全起见,禁止16位纯DOS程序运行,检查config.nt文件,未发现异常。在网上搜索此类故障,得到的解答普遍如下,如Microsoft官方描述:

方法 1

将 CD 插入 CD 驱动器或 DVD 驱动器。 单击“开始”,然后单击“运行”。

在“打开”框中,键入 cmd,然后单击“确定”。

在命令提示符处键入以下命令,并在键入每条命令后按 Enter:

expand :\\i386\\config.nt_ c:\\windows\\system32\\config.nt

expand :\\i386\\autoexec.nt_ c:\\windows\\system32\\autoexec.nt expand :\\i386\\command.co_ c:\\windows\\system32\\command.com exit

启动或安装程序。如果问题已经解决,请不要继续执行余下的步骤。如果问题没有解决,请转至下一步。

注意:在以下过程中,不会编辑或创建 Command.com 文件。因此,您可能必须从 Windows XP CD-ROM 中展开它。

启动记事本。

在记事本中,键入下列条目:

dos=high, umb

device=%SYSTEMROOT%\\system32\\himem.sys files=40

在“文件”菜单上,单击“另存为”。

在“文件名”框中,键入 Config.nt,然后单击“保存”。关闭 Config.nt 文件。 在“文件”菜单上,单击“新建”。 在新的空白文档中,键入下列条目:

@echo off

lh %SYSTEMROOT%\\system32\\mscdexnt.exe lh %SYSTEMROOT%\\system32\\redir lh %SYSTEMROOT%\\system32\\dosx SET BLASTER=A220 I5 D1 P330 T3

在“文件”菜单上,单击“另存为”。

在“文件名”框中,键入 Autoexec.nt,然后单击“保存”。关闭 Autoexec.nt 文件。 启动 Windows 资源管理器。找到 Config.nt 文件,右键单击“Config.nt”文件,然后单击“复制”。

右键单击 %SYSTEMROOT%\\System32 文件夹,然后单击“粘贴”。

找到 Autoexec.nt 文件,右键单击“Autoexec.nt”文件,然后单击“复制”。 右键单击 %SYSTEMROOT%\\System32 文件夹,然后单击“粘贴”。

找到 Command.com 文件,右键单击展开的“Command.com”文件,然后单击“复制”。 右键单击 %SYSTEMROOT%\\System32 文件夹,然后单击“粘贴”。重新启动计算机。

如果问题仍然存在,则将 Autoexec.nt 和 Config.nt 文件从 Windows 中的“Repair”文件夹复制到“System”文件夹中。为此,请按照下列步骤操作:

依次单击“开始”和“运行”,键入 c:\\windows\\repair,然后单击“确定”。 右键单击“Autoexec.nt”,然后单击“复制”。 依次单击“开始”和“运行”,键入 c:\\windows\\system32,然后单击“确定”。 在该文件夹中右键单击任意位置,然后单击“粘贴”。

右键单击刚复制的“Autoexec.nt”文件,然后单击“属性”。 单击以选择“只读”,然后单击“确定”。 重复步骤 1 到 6 以复制 Config.nt 文件。

注意:必须启用只读权限,否则重新启动 Windows 后这些文件将删除。

方法 2

依次单击“开始”和“运行”,键入 C:\\windows\\repair,然后单击“确定”。 右键单击 Autoexec.nt 文件,然后单击“复制”。 依次单击“开始”和“运行”,键入 %windir%\\system32,然后单击“确定”。 在 System32 文件夹中,按“Ctrl”+“V”,以便将 Autoexec.nt 文件粘贴到该文件夹中。

我检查了系统,发现三个关键的文件都在,文件内容正常,文件权限也无问题,更重要的是,无意中发现用user账户登录后竟然可以正常运行DOS程序!那为什么administrator账户不能运行呢?按道理超级管理员应该拥有最高权限才对!

后来我又在微软官网上找到这样的解答:

如果满足以下所有条件,就可能发生此问题:

您试图运行一个 16 位程序。

您安装了 Microsoft Windows 的 MS04-032 安全更新。 您禁用了 NTFS 文件系统的 8.3 文件名创建格式。

在 Windows 2000 上运行 16 位程序时,该程序在 Microsoft Windows NT 的虚拟 DOS 机

器 (NTVDM) 中运行。NTVDM 是一个多线程进程,它模拟 16 位 Windows 环境,在该环境中,基于 Windows 的 16 位程序可作为独立的线程运行。NTVDM 使用 TMP 系统变量来查找运行程序的位置。通常,TMP 系统变量设置为 C:\\WINNT\\Temp。此文件夹在新建文件时使用 8.3 文件命名格式,而不使用长文件名。

安装 Microsoft Windows MS04-032 安全更新后,NTVDM 使用 TMP 用户变量而不是 TMP 系统变量。如果您的计算机上禁用了 8.3 文件名创建格式,则 TMP 用户变量将使用长文件名。

要解决此问题,请按照下列步骤操作:

单击“开始”,指向“设置”,然后单击“控制面板”。 双击“系统”,单击“高级”选项卡,然后单击“环境变量”。 在“User_Name 的用户变量”列表中,单击“TMP”,然后单击“编辑”。 在“变量值”框中,键入 c:\\winnt\\temp,然后单击“确定”三次。

也可以在“变量值”框中键入不使用长文件名的任何文件夹路径。 关闭“控制面板”。

如果禁用了 8.3 文件名创建格式,则注册表项 NtfsDisable8dot3NameCreation 的值为 1。该注册表项位于以下注册表子项中:

HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\FileSystem

由于许多 16 位程序无法使用长文件名,我们建议您不要在运行 16 位程序的计算机上禁用 8.3 文件名创建格式。

然后我检查了注册表,发现在该WIN7系统中NtfsDisable8dot3NameCreation的值为2,暂不明白这样的值代表什么含义,按位理解的话,最低位为0,应该是没有禁用,同时user账户能正常工作也说明了这一点。

于是我再检查两个账户的环境变量,发现两个账户的TMP环境变量的值均为“%USERPROFILE%\\AppData\\Local\\Temp”,在命令提示符中运行SET指令做进一步观察结果为:

上图是超级管理员账户的TEMP环境变量,user账户只是账户名不同。忽然我发现超级管理员administrator这个字符串超过了8字节,这样系统会使用长文件名,这会不会就是导致管理员无法运行MS DOS程序的原因呢?于是将管理员的环境变量改为“c:\\temp”,再运行DOS程序,故障排除!