我尝试使用win32 api在c ++中执行以下bat文件.以下是执行代码.
//#include "Shellapi.h"
#include "Windows.h"
int _tmain(int argc, _TCHAR* argv[])
{
ShellExecute(GetDesktopWindow(), "sa.bat","", NULL, NULL, SW_SHOWNORMAL);
DWORD LastError = GetLastError();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
但它不起作用.
以下是内容"sa.bat"
C:\ windows\system32\wusa/uninstall/kb:2718695/quiet/forcerestart
但最后一个错误返回1155.
试试这个:
//#include "Shellapi.h"
#include "Windows.h"
int _tmain(int argc, _TCHAR* argv[])
{
HINSTANCE hReturnCode=ShellExecute(NULL, _T("open"), _T("cmd.exe"), _T("/C sa.bat"), NULL, SW_SHOWNORMAL);
DWORD LastError = GetLastError();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
[编辑]这个工作建议来自克里斯:
//#include "Shellapi.h"
#include "Windows.h"
int _tmain(int argc, _TCHAR* argv[])
{
HINSTANCE hReturnCode=ShellExecute(NULL, _T("open"), _T("sa.bat"), NULL, NULL, SW_SHOWNORMAL);
DWORD LastError = GetLastError();
return 0;
}
Run Code Online (Sandbox Code Playgroud)