mirror of
https://github.com/microsoft/PowerToys.git
synced 2026-04-10 05:06:36 +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 elevated = is_process_elevated();
|
||||||
const bool with_dont_elevate_arg = cmdLine.find("--dont-elevate") != std::string::npos;
|
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 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)
|
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();
|
schedule_restart_as_non_elevated();
|
||||||
result = 0;
|
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);
|
result = runner(elevated, open_settings, settings_window, openOobe, openScoobe);
|
||||||
|
|
||||||
if (result == 0)
|
if (result == 0)
|
||||||
|
|||||||
@@ -42,9 +42,9 @@ bool restart_if_scheduled()
|
|||||||
switch (state)
|
switch (state)
|
||||||
{
|
{
|
||||||
case RestartAsElevated:
|
case RestartAsElevated:
|
||||||
return run_elevated(exe_path.get(), {});
|
return run_elevated(exe_path.get(), L"--restartedElevated");
|
||||||
case RestartAsElevatedOpenSettings:
|
case RestartAsElevatedOpenSettings:
|
||||||
return run_elevated(exe_path.get(), L"--open-settings");
|
return run_elevated(exe_path.get(), L"--restartedElevated --open-settings");
|
||||||
case RestartAsNonElevatedOpenSettings:
|
case RestartAsNonElevatedOpenSettings:
|
||||||
return run_non_elevated(exe_path.get(), L"--open-settings", NULL);
|
return run_non_elevated(exe_path.get(), L"--open-settings", NULL);
|
||||||
case RestartAsNonElevated:
|
case RestartAsNonElevated:
|
||||||
|
|||||||
Reference in New Issue
Block a user