Skip to content

Commit

Permalink
Fallback to run as admin after install, if running PT as user not pos…
Browse files Browse the repository at this point in the history
…sible (microsoft#16089)

* Fallback to run as admin, if running PT as user not possible

* Update condition - address PR comment

Co-authored-by: Andrey Nekrasov <yuyoyuppe@users.noreply.github.com>

* Update condition #2 - address PR comment

Co-authored-by: Andrey Nekrasov <yuyoyuppe@users.noreply.github.com>

* Update condition microsoft#3 - address PR comment

Co-authored-by: Andrey Nekrasov <yuyoyuppe@users.noreply.github.com>

* Revert method name & unify var namings

Co-authored-by: Andrey Nekrasov <yuyoyuppe@users.noreply.github.com>
  • Loading branch information
stefansjfw and yuyoyuppe authored Feb 8, 2022
1 parent c3dda23 commit 11bb7cc
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 12 deletions.
21 changes: 10 additions & 11 deletions src/runner/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -386,15 +386,17 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine
apply_general_settings(general_settings, false);
int rvalue = 0;
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);

if (elevated && cmdLine.find("--dont-elevate") != std::string::npos &&
general_settings.GetNamedBoolean(L"run_elevated", false) == false) {
if (elevated && with_dont_elevate_arg && !run_elevated_setting)

{
schedule_restart_as_non_elevated();
result = 0;
}
else if ((elevated ||
general_settings.GetNamedBoolean(L"run_elevated", false) == false ||
cmdLine.find("--dont-elevate") != std::string::npos))
else if (elevated || !run_elevated_setting || with_dont_elevate_arg)

{
result = runner(elevated, open_settings, settings_window, openOobe);

Expand Down Expand Up @@ -423,14 +425,11 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine

if (is_restart_scheduled())
{
if (restart_if_scheduled() == false)
{
auto text = is_process_elevated() ? GET_RESOURCE_STRING(IDS_COULDNOT_RESTART_NONELEVATED) :
GET_RESOURCE_STRING(IDS_COULDNOT_RESTART_ELEVATED);
MessageBoxW(nullptr, text.c_str(), GET_RESOURCE_STRING(IDS_ERROR).c_str(), MB_OK | MB_ICONERROR | MB_SETFOREGROUND);
if (!restart_if_scheduled())

{
Logger::warn("Scheduled restart failed. Trying restart as admin as fallback...");
restart_same_elevation();
result = -1;
}
}
stop_tray_icon();
Expand Down
2 changes: 1 addition & 1 deletion src/runner/restart_elevated.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -52,5 +52,5 @@ bool restart_same_elevation()
constexpr DWORD exe_path_size = 0xFFFF;
auto exe_path = std::make_unique<wchar_t[]>(exe_path_size);
GetModuleFileNameW(nullptr, exe_path.get(), exe_path_size);
return run_same_elevation(exe_path.get(), L"--dont-elevate", nullptr);
return run_same_elevation(exe_path.get(), L"", nullptr);
}

0 comments on commit 11bb7cc

Please sign in to comment.