我知道从安全角度来看这不是一个好主意。但绝对必须这样做。问题:Windows 7 Home Premium x64,需要运行一个将输出文件写入 C:\ 的 DOS 应用程序。该应用程序运行良好,但没有产生任何错误,只是无法写入文件。我尝试过 runas 和 elevate - 都没有任何区别。我已通过安全选项卡授予用户对 c: 驱动器的完全权限 - 通过 gui,他们可以轻松地在 C: 中创建新的 RTF 文档。
这一切都是因为一个在 XP 上的 Dos 中运行的现有会计应用程序是由一位现已去世的开发人员构建的,该计算机比他活得更久,并且已经被 Win7 系统所取代。
答案1
使用进程监控找出程序试图创建的文件以及它从操作系统中得到的错误。如果程序没有报告任何错误,它可能只是将文件写入其他地方。
在 cmd.exe 继续执行其他批处理任务之前,您应该看到实际进程启动、读取您的会计数据库并创建输出文件。(请注意,CreateFile 系统调用也用于读取现有文件,而不仅仅是用于创建新文件。)
然而,如果它真的是 DOS 应用程序,那么它根本无法启动,因为 NTVDM DOS 仿真不是 x64 Windows 的一部分。在这种情况下,您需要运行 32 位 Windows(例如在 VirtualBox 中),或使用 DOSbox 等工具。