Я пришел к выводу, что ShellExecute () на самом деле не работает надежно, когда в системе используется AppLocker.В одном случае это вернуло бы значение 42, которое указывало бы на успешное выполнение setup.exe, и в журнале говорилось, что запуск не был предотвращен, но все же setup.exe не открывался.В другом случае это будет предотвращено, но вернется значение 42.
Поэтому я переключился на CreateProcess (), потому что он всегда надежно возвращает false, если каким-то образом выполнение setup.exe не работает и всегда trueесли он работает.Вот мой код:
STARTUPINFO info={sizeof(info)};
PROCESS_INFORMATION processInfo;
if (CreateProcessW(NULL, "filepath + /paremeters", NULL, NULL, true, CREATE_NEW_CONSOLE, NULL, NULL, &info, &processInfo)) {
//Do something
CloseHandle(processInfo.hProcess);
CloseHandle(processInfo.hThread);
} else {
//Do something
}