我正在尝试从标准 Windows XP DOS 提示符运行几个 16 位旧版 DOS 程序。问题是文件扩展名已从 .COM 重命名为 .COS,并且它们存储在只读介质上,我无法复制它们(特殊环境)。
尽管扩展名很奇怪,但关于如何调用这些文件的任何提示?如果它们是 32 位 EXE,即使没有正确的扩展名,运行它们也不会有问题,但对于这些 COM 文件,我无法找到运行它们的方法。
答案1
看看我能做什么:-)(刚刚在 XP DOS 框中完成了此操作):
C:\>md test
C:\>cd test
C:\test>xcopy c:\windows\system32\tree.com
C:\windows\system32\tree.com
1 File(s) copied
C:\test>md t1
C:\test>md t2
C:\test>tree
Volume in drive C is OSDisk
Volume Serial Number is 0006EFC4 9654:5A1E
C:.
├───t1
└───t2
C:\test>ren tree.com tree.cos
C:\test>tree.cos
Volume in drive C is OSDisk
Volume Serial Number is 0006EFC4 9654:5A1E
C:.
├───t1
└───t2
C:\test>ren tree.cos newname.cos
C:\test>newname.cos
Volume in drive C is OSDisk
Volume Serial Number is 0006EFC4 9654:5A1E
C:.
├───t1
└───t2
C:\test>
即,如果您在 DOS 提示符下明确命名扩展名,您显然可以执行 cos 文件。
答案2
好的。我已经搞明白了。我想,不管怎样。这利用了这样一个事实:DOS .COM 文件只是带有 0x100 字节标头的二进制图像,前几个字节是JMP 0x0100
(希望我没记错)和debug
XP 中存在的旧 DOS 实用程序。
- 打开命令提示符
cd
到包含 .COS 文件的目录debug
enter- 您现在位于
debug.exe
提示符下(只有一个破折号) - 类型
n{name of your .COS file, including extension}
- 适当替换。例如,对于 FILE.COS 类型nfile.cos
,则enter - 然后输入
l
(用于加载)enter - 然后输入
g
(for go)enter
请告诉我进展如何。我已加载C:\windows\system32\tree.com
,但显然它确实是一个.EXE
(说这不能在 DOS 模式下运行)。祝你好运。
(顺便说一下只是阅读上面关于 tree.com 的内容,哎呀!)
答案3
不,恐怕在您描述的情况下无法实现您的愿望。可执行文件是经过特殊处理的(因为它们具有感染系统的能力),因此 Windows 不会让您将任何旧文件作为可执行文件运行。
环境变量PATHEXT
告诉 Windows 哪些程序是“可执行”的并且可以“运行”,但也有限制。打开命令提示符并附加到.cos
以下文件pathext
之一并尝试运行.cos
:
> set pathext=.cos;%pathext%
> foobar.cos
您将看到默认的“所有文件”程序运行,或者如果没有配置,则打开用对话框出现。为什么?因为 Windows 出于安全原因限制了可以运行的内容。您应该能够将.cos
文件注册为可执行文件(如.py
、.pl
等),但即使这样,也可能无法实现,因为.py
或.pl
文件实际上只是一个文档由程序打开,而不是实际打开可执行文件。
另一个选择可能是尝试创建关联,通过此关联告诉系统.cos
文件是comfiles
。但是,我刚刚尝试的快速测试没有成功,Windows 抱怨它不是可执行文件并返回拒绝访问。