如果我使用 C++ Windows API“CreateProcess”或 C 运行时库“system”来启动大多数进程,它们运行良好。但是,如果我使用与 Windows 7 和 8 下的“openfiles.exe/query”中相同的方式启动 openfiles.exe,它永远不会起作用。它提示需要运行 32 位操作系统,或者,如果我使用 runas 提升它,我会得到无效函数。在 Win 7 和 8 下,openfiles.exe 肯定有一些特殊之处,尽管它在命令提示符下运行良好,但在由另一个进程启动时永远不会运行。为什么?
最佳答案
看来在 Windows 64 位下,应用程序必须也是 64 位的(32 位操作系统不确定)。
我的系统是 Windows 7 64 位,如果我将“目标平台”设置为“64 位 Windows”来构建我的应用程序,则可以执行以下操作。
::ShellExecuteW( this->Handle, NULL, L"openfiles.exe", L"/query", NULL, SW_SHOWNORMAL );
我相信其他启动选项也可以像 CreateProcess 一样工作。
但是在构建 32 位应用程序时会出现同样的错误。
关于c++ - 在 Windows 7 和 8 下,openfiles.exe 无法由其他应用程序启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20476658/