【发布时间】:2013-12-26 22:02:44
【问题描述】:
如果我使用 C++ Windows API“CreateProcess”或 C 运行时库“system”来启动大多数进程,它们运行良好。但是,如果我在 Windows 7 和 8 下使用相同的方式启动 openfiles.exe,就像在“openfiles.exe /query”中一样,它永远不会起作用。它抱怨需要运行 32 位操作系统,或者,如果我使用 runas 提升它,我会得到 Invalid Function。在 Win 7 和 8 下 openfiles.exe 肯定有一些特殊之处,尽管它在命令提示符下运行良好,但在由另一个进程启动时它永远不会运行。为什么?
【问题讨论】:
-
我怀疑这是 32 位与 64 位可执行文件的问题。 IIRC,即使在 64 位系统上,openfiles.exe 也是 32 位 exe。查看 CreateProcess 标志并确保您为 32/64 位上下文做正确的事情。
-
这是您尝试在 64 位操作系统上运行 16 位程序时遇到的错误类型。在您的机器上查找名为“openfiles.com”的文件。
-
Win 7 32位下问题依旧。错误消息是一条红鲱鱼。
-
从 Win 7 开始,微软似乎已限制从其他应用程序启动 openfiles.exe。在命令提示符下,一切正常,但其他任何事情都是“不行”。似乎它在启动时正在查看进程链,如果链不是必需的则不运行。
标签: c++ windows winapi c++builder