C++ ShellExecute以在C++;
我试图从C++中的代码打开SigVIEF.EXE,但是返回值是2,.exe不打开C++ ShellExecute以在C++;,c++,shellexecute,C++,Shellexecute,我试图从C++中的代码打开SigVIEF.EXE,但是返回值是2,.exe不打开 ShellExecute(NULL, _T("open"), _T("C:\\Windows\\System32\\sigverif.exe"), NULL, NULL, SW_RESTORE); 如果我通过运行命令键入打开sigverif.exe “C:\Windows\system32\sigverif.exe” 它很好用 可能是什么问题 返回值为2且.exe未打开 ShellExecute(NULL, _T
ShellExecute(NULL, _T("open"), _T("C:\\Windows\\System32\\sigverif.exe"), NULL, NULL, SW_RESTORE);
如果我通过运行命令键入打开sigverif.exe
“C:\Windows\system32\sigverif.exe”
它很好用
可能是什么问题
返回值为2且.exe未打开
ShellExecute(NULL, _T("open"), _T("C:\\Windows\\System32\\sigverif.exe"), NULL, NULL, SW_RESTORE);
基于meansERROR\u FILE\u NOT\u FOUND的返回值
是的,您的应用程序确实找不到给定的路径,因为您正在Windows自动重定向涉及的x86
上构建它,并将C:\Windows\System32
替换为C:\Windows\SysWOW64
,其中包含Windows的32位二进制文件
您有两个选择:
您可以在x64
上构建它,也可以使用wow64禁用wow64fsredirection
如下所示:
PVOID OldValue = nullptr;
Wow64DisableWow64FsRedirection(&OldValue);
ShellExecute(NULL, _T("open"), _T("C:\\Windows\\System32\\sigverif.exe"), NULL, NULL, SW_RESTORE);
请注意,Wow64DisableWow64FsRedirection
在当前线程中全局影响,您可以在页面中找到更多详细信息:
注意Wow64DisableWow64FsRedirection函数会影响当前线程执行的所有文件操作,如果文件系统重定向在任何时间段内被禁用,则可能会产生意外后果
因此,请确保它不会无意中影响其他操作,或者在通过调用解决您的需求后立即将其设置回enabled
返回值为2且.exe未打开
ShellExecute(NULL, _T("open"), _T("C:\\Windows\\System32\\sigverif.exe"), NULL, NULL, SW_RESTORE);
基于meansERROR\u FILE\u NOT\u FOUND的返回值
是的,您的应用程序确实找不到给定的路径,因为您正在Windows自动重定向涉及的x86
上构建它,并将C:\Windows\System32
替换为C:\Windows\SysWOW64
,其中包含Windows的32位二进制文件
您有两个选择:
您可以在x64
上构建它,也可以使用wow64禁用wow64fsredirection
如下所示:
PVOID OldValue = nullptr;
Wow64DisableWow64FsRedirection(&OldValue);
ShellExecute(NULL, _T("open"), _T("C:\\Windows\\System32\\sigverif.exe"), NULL, NULL, SW_RESTORE);
请注意,Wow64DisableWow64FsRedirection
在当前线程中全局影响,您可以在页面中找到更多详细信息:
注意Wow64DisableWow64FsRedirection函数会影响当前线程执行的所有文件操作,如果文件系统重定向在任何时间段内被禁用,则可能会产生意外后果
因此,请确保它不会无意中影响其他操作,或者在通过调用解决您的愿望后,立即将其设置回启用状态。反斜杠\在字符串中具有特殊含义。使用两个\\转义它,或将字符串逐字写入“字符串”同一行代码用于打开同一位置的其他可执行文件使用一个“\”而不是2“/”。注意标记处理什么
SW_RESTORE
?您不应该使用SW\u SHOW
?非常肯定,这是打开新窗口的默认模式。考虑C:\Windows \ SysSnistic,因此它甚至可以在32位进程中工作。反斜杠\在字符串中有特殊含义。使用两个\\转义它,或将字符串逐字写入“字符串”同一行代码用于打开同一位置的其他可执行文件使用一个“\”而不是2“/”。注意标记处理什么SW_RESTORE
?您不应该使用SW\u SHOW
?非常肯定,这是打开新窗口的默认模式。考虑C:\Windows \ SysSnistic,因此它甚至可以在32位进程中工作。