c ++ - CreateProcess () Fejl

Indlæg af Hanne Mølgaard Plasc

Problem



STARTUPINFO si;
PROCESS\_INFORMATION pi;
memset(&si, 0, sizeof(si));
memset(&pi, 0, sizeof(pi));
si.cb = sizeof(si);

LPCWSTR procName =(LPCWSTR)"D:\test dir 1\Calc.exe";
LPWSTR procArg   =(LPWSTR)"blacknull";

if(CreateProcess(procName,procArg,0,0,0,CREATE\_DEFAULT\_ERROR\_MODE,0,0,&si,&pi))
{
    //do some work
}

printf( "CreateProcess failed (\%d).
", GetLastError());
     system("Pause");


Det holder kaste fejl (2) -> The System cannot find the file specified.


Jeg ved ikke, hvad der er galt. Jeg forsøgte også at bruge 'Calc.exe', som i samme Dir. men det virker ikke.

Bedste reference


Du bruger prefixet L til at lave en bred tegnstreng:


L"D:\test dir 1\Calc.exe";


Casting en streng bogstavelig til en anden tegnbredde gør ikke en streng bredere.

Andre referencer 1


Ud over det strengtype problem, der allerede er påpeget, skal det andet argument (lpCommandLine) pege på en skrivbar buffer, ikke en konstant streng. Det kan du gøre ved at erklære det som følger:


WCHAR procArg[] = L"blacknull";


Dette er dokumenteret i MSDN: 'Unicode-versionen af ​​denne funktion, CreateProcessW, kan ændre indholdet af denne streng. Derfor kan denne parameter ikke være en pointer til skrivebeskyttet hukommelse (som en const-variabel eller en bogstav). denne parameter er en konstant streng, funktionen kan medføre en adgangsfejl. '[6]