我需要重新啓動下載更新之後正在運行的程序,除了正在運行某些問題。重新啓動exe時遇到的問題
如果我使用CreateProcess什麼也沒有發生,如果我使用ShellExecute,我得到一個0xC0150002錯誤,如果我使用命令「runas」ShellExecute它工作正常。我可以使用CreateProcess和ShellExecute再次啓動命令提示符,而不是再次使用相同的exe文件,並且不想使用runas,因爲這會提升exe文件。
任何想法?
Windows 7中,視覺工作室2008 C++
alt text 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);
問題是exe自行運行正常,只有在嘗試重新啓動時纔會出現此問題。 – Lodle 2009-07-11 04:55:33
如果它*是一個明顯的問題,您可以使用事件查看器來追蹤它。 然後,如果這沒有幫助,請從命令行運行sxstrace,如果您需要更多信息。 (運行一次,沒有參數可以看到它的用法) 但是這對我來說不是一個明顯的問題。 – 2009-07-11 06:38:21