ShellExecute()不使用.bat文件

Ary*_*yan 2 c++ winapi

我尝试使用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.

duD*_*uDE 7

试试这个:

//#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)

  • 批处理文件应该作为第三个参数,不应该吗?我用它们代替其他地方的可执行文件. (2认同)