Я следил за this article для подъема процесса, однако в моем коде ниже (в значительной степени копия в настоящее время) при отладке я получаю бесконечное количество создаваемых оболочек. Отображается строка, на которой это происходит.Подъемный процесс через 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.
}
}
Похоже, вы запускаете копию себя, которая запускает копию самого себя, которая запускает ... –