mirror of
https://github.com/microsoft/PowerToys.git
synced 2026-04-05 10:46:33 +02:00
[Runner]Adding param when restarting to detect restart loop (#27794)
* [Runner] adding param when restarting to detect restart loop * modifying comment to be more precise * Adding log for the restart-loop-break scenarios
This commit is contained in:
@@ -465,6 +465,7 @@ int WINAPI WinMain(HINSTANCE /*hInstance*/, HINSTANCE /*hPrevInstance*/, LPSTR l
|
||||
const bool elevated = is_process_elevated();
|
||||
const bool with_dont_elevate_arg = cmdLine.find("--dont-elevate") != std::string::npos;
|
||||
const bool run_elevated_setting = general_settings.GetNamedBoolean(L"run_elevated", false);
|
||||
const bool with_restartedElevated_arg = cmdLine.find("--restartedElevated") != std::string::npos;
|
||||
|
||||
if (elevated && with_dont_elevate_arg && !run_elevated_setting)
|
||||
{
|
||||
@@ -472,8 +473,14 @@ int WINAPI WinMain(HINSTANCE /*hInstance*/, HINSTANCE /*hPrevInstance*/, LPSTR l
|
||||
schedule_restart_as_non_elevated();
|
||||
result = 0;
|
||||
}
|
||||
else if (elevated || !run_elevated_setting || with_dont_elevate_arg)
|
||||
else if (elevated || !run_elevated_setting || with_dont_elevate_arg || (!elevated && with_restartedElevated_arg))
|
||||
{
|
||||
// The condition (!elevated && with_restartedElevated_arg) solves issue #19307. Restart elevated loop detected, running non-elevated
|
||||
if (!elevated && with_restartedElevated_arg)
|
||||
{
|
||||
Logger::info("Restart as elevated failed. Running non-elevated.");
|
||||
}
|
||||
|
||||
result = runner(elevated, open_settings, settings_window, openOobe, openScoobe);
|
||||
|
||||
if (result == 0)
|
||||
|
||||
@@ -42,9 +42,9 @@ bool restart_if_scheduled()
|
||||
switch (state)
|
||||
{
|
||||
case RestartAsElevated:
|
||||
return run_elevated(exe_path.get(), {});
|
||||
return run_elevated(exe_path.get(), L"--restartedElevated");
|
||||
case RestartAsElevatedOpenSettings:
|
||||
return run_elevated(exe_path.get(), L"--open-settings");
|
||||
return run_elevated(exe_path.get(), L"--restartedElevated --open-settings");
|
||||
case RestartAsNonElevatedOpenSettings:
|
||||
return run_non_elevated(exe_path.get(), L"--open-settings", NULL);
|
||||
case RestartAsNonElevated:
|
||||
|
||||
Reference in New Issue
Block a user