C++ CreateprocessA 失败错误

C++ CreateprocessA Failed Error

我使用此代码,但出现失败错误:2 我知道这意味着该文件不存在,但不知道哪里出了问题。

DWORD size = 1024;
TCHAR buff[1024];

 int err = AssocQueryString(ASSOCF_INIT_IGNOREUNKNOWN, ASSOCSTR_EXECUTABLE, _T(".html"), NULL, buff, &size);

 STARTUPINFOA si;
 PROCESS_INFORMATION pi;

 ZeroMemory(&si, sizeof(si));
 si.cb = sizeof(si);
 ZeroMemory(&pi, sizeof(pi));
 LPCSTR BrowLoc = (LPCSTR)buff;

 if (!CreateProcessA(BrowLoc,     // No module name (use command line)
     NULL,
     NULL,           // Process handle not inheritable
     NULL,           // Thread handle not inhberitable
     FALSE,          // Set handle inheritance to FALSE
     0,              // No creation flags
     NULL,           // Use parent's environment block
     NULL,           // Use parent's starting directory 
     &si,            // Pointer to STARTUPINFO structure
     &pi)           // Pointer to PROCESS_INFORMATION structure
     )
 {
     printf("CreateProcess failed (%d).\n", GetLastError());
     getchar();
     return 0;
 }

我猜你使用的是 unicode。在那种情况下,强制对 AssocQueryString() 使用多字节字符。

前 3 行使用下面的代码。

DWORD size = 1024;
char buff[1024];

 int err = AssocQueryStringA(ASSOCF_INIT_IGNOREUNKNOWN, ASSOCSTR_EXECUTABLE, ".html", NULL, buff, &size);