0

Я следил за 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. 
    }  
} 
+1

Похоже, вы запускаете копию себя, которая запускает копию самого себя, которая запускает ... –

ответ

2

Роджера прав: вы запускаете копию программы, которая запускает копию программы и т.д. и т.п. - то, что отсутствует является IsAppRunningAsAdminMode() функцией из статьи, которую вы ссылаетесь: вы должны назвать его первым а затем попытайтесь запустить новую повышенную копию программы, только если она вернет false - то есть, только если текущая программа выполнения не будет повышена.

+0

Хорошо спасибо. Я попробовал следующее ниже, но «fIsRunAsAdmin» отмечен как undefined ?? \t 'IsAppRunningAsAdminMode(); \t если (fIsRunAsAdmin = ложь) { \t \t // поднять процесс \t} \t еще { \t \t // ничего не делать, так как процесс уже приподнятой \t} ' –

+0

@NickProwse: вы скопировать саму функцию от статью в ваш исходный код? – MiMo

+1

@NickProwse: 'fIsRunAsAdmin = false' присваивает' false' '' fIsRunAsAdmin' - вам нужно 'fIsRunAdAdmin == false' - или лучше'! FIsRunAsAdmin' – MiMo

Смежные вопросы