我跟着this article來升級一個進程,但是在我的代碼下面(幾乎是當前的一個副本),在調試的時候,我得到了無限數量的shell被創建。顯示它發生的行。通過ShellExecuteInfo提升進程 - 無限殼?
我看過MSDN文章here,但這並沒有給我太多的見解。 請告訴我做錯了什麼?
我是新來的C++。
wchar_t szPath[MAX_PATH];
if (GetModuleFileName(NULL, szPath, ARRAYSIZE(szPath)))
{
// Launch itself as admin
SHELLEXECUTEINFO sei = { sizeof(sei) };
sei.lpVerb = L"runas";
sei.lpFile = szPath;
sei.hwnd = NULL;
sei.nShow = SW_NORMAL;
if (!ShellExecuteEx(&sei)) //get infinite shells here
{
DWORD dwError = GetLastError();
if (dwError == ERROR_CANCELLED)
{
// The user refused to allow privileges elevation.
std::cout << "User did not allow elevation" << std::endl;
}
}
else
{
//other lines of code omitted.
}
}
它看起來像你啓動自己的副本,其中啓動自己的副本,其中啓動.... –