Мне нужно перезапустить программу, над которой я работаю, после загрузки обновления, за исключением того, что я столкнулся с некоторыми проблемами.
Если я использую CreateProcess, то ничего не происходит, если я использую ShellExecute, я получаю ошибку 0xC0150002 и если я использую ShellExecute с командой "runas", она работает нормально. Я могу нормально запустить командную строку, используя CreateProcess и ShellExecute, но не тот же exe-файл, и не хочу использовать runas, так как это повысит его.
Есть идеи?
Windows 7, visual studio 2008 c ++
альтернативный текст http://lodle.net/shell_error.jpg
CreateProcess:
char exePath[255];
GetModuleFileName(NULL, exePath, 255);
size_t exePathLen = strlen(exePath);
for (size_t x=exePathLen; x>0; x--)
{
if (exePath[x] == '\\')
break;
else
exePath[x] = '\0';
}
char name[255];
GetModuleFileName(NULL, name, 255);
PROCESS_INFORMATION ProcInfo = {0};
STARTUPINFO StartupInfo = {0};
BOOL res = CreateProcess(name, "-wait", NULL, NULL, false, 0, NULL, exePath, &StartupInfo, &ProcInfo );
ShellExecute:
char exePath[255];
GetModuleFileName(NULL, exePath, 255);
size_t exePathLen = strlen(exePath);
for (size_t x=exePathLen; x>0; x--)
{
if (exePath[x] == '\\')
break;
else
exePath[x] = '\0';
}
char name[255];
GetModuleFileName(NULL, name, 255);
INT_PTR r = (INT_PTR)ShellExecute(NULL, "runas", name, "-wait", exePath, SW_SHOW);