Debug.exe 在 Windows 10 32 位中无法按预期工作。
如果我尝试从命令提示符(CMD.EXE)运行调试,我会收到错误:16 位 MS-DOS 子系统,NTVDM 遇到系统错误 4001h。
相反,如果我按下开始,输入“command.com”,然后从列表中选择 command.com,当我尝试运行调试时,我得到:“系统无法执行指定的程序。”
如果我使用文件资源管理器在 \windows\system32 目录中找到 command.com 或 debug.exe 并双击它们,则调试将正常启动。
最后一个有趣的怪癖是,即使我启动了调试,我也看不到映射到 f000:0 的 BIOS。这是我用来从 Windows 内部提取 BIOS 信息的一种技术。
我的问题是:是否有设置或其他类型的配置会导致 debug.exe 像以前在 Windows XP 下一样映射 BIOS?从 CMD.EXE 内部启动 16 位程序失败的问题可以修复吗?
答案1
第一个问题:不,无法从 Windows 10 读取 BIOS。
更新:在 32 位 Windows 10 下,如果您知道如何使用较新的 API,则可以通过较新的 API 读取 BIOS。就现有实用程序而言,我的其余评论都是准确的。
以下是获取 BIOS 的 API 示例:
// Query size of BIOS data.
BIOSDataSize = GetSystemFirmwareTable('FIRM', 0xE0000, NULL, 0);
// Allocate memory for BIOS data
BIOSData = (char*) HeapAlloc(GetProcessHeap(), 0, BIOSDataSize);
// Retrieve the BIOS table
bytesRead = GetSystemFirmwareTable('FIRM', 0xE0000, BIOSData, BIOSDataSize);
我发现,如果我按下“开始”,输入“debug”,右键单击并选择“以管理员身份运行”,我可以看到类似 BIOS 的东西。这是不是实际的机器 BIOS。
我使用 Windows XP 启动系统,在 f000:0 处看到完全不同的 BIOS。使用 XP 读取时,我看到“IBM COMPATIBLE IBM IS A ...”
使用 Windows 10 启动并从开始菜单启动 debug.exe,在 f000:e000 我看到“4504512 SoftPC 4.00 (C)Copyright Insignia Solutions Inc. 1995”。
我得出的结论是,实际的 BIOS 在 Windows 10 中是故意不可用的,并且无法从 Windows 读取它。
第二个问题:既不是也不是。我找不到从 CMD 窗口启动 debug.exe 的方法。解决这个问题的方法是创建一个计划任务并触发它。请参阅:在 Windows 7 中以管理员权限安排任务,无需用户提示