From feeadb3c988cf446707edff842319b52d606fa36 Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Mon, 10 Jan 2022 13:02:11 +0100 Subject: [PATCH] Upgrade platform_process_is_elevated() --- src/openrct2/Context.cpp | 2 +- src/openrct2/platform/Platform.Posix.cpp | 9 +++++++++ src/openrct2/platform/Platform.Win32.cpp | 20 ++++++++++++++++++++ src/openrct2/platform/Platform2.h | 1 + src/openrct2/platform/Posix.cpp | 9 --------- src/openrct2/platform/Windows.cpp | 20 -------------------- src/openrct2/platform/platform.h | 1 - 7 files changed, 31 insertions(+), 31 deletions(-) diff --git a/src/openrct2/Context.cpp b/src/openrct2/Context.cpp index 4939bf1081..3c8822a3bd 100644 --- a/src/openrct2/Context.cpp +++ b/src/openrct2/Context.cpp @@ -430,7 +430,7 @@ namespace OpenRCT2 } #endif - if (platform_process_is_elevated()) + if (Platform::ProcessIsElevated()) { std::string elevationWarning = _localisationService->GetString(STR_ADMIN_NOT_RECOMMENDED); if (gOpenRCT2Headless) diff --git a/src/openrct2/platform/Platform.Posix.cpp b/src/openrct2/platform/Platform.Posix.cpp index f17338a690..7133daf511 100644 --- a/src/openrct2/platform/Platform.Posix.cpp +++ b/src/openrct2/platform/Platform.Posix.cpp @@ -309,6 +309,15 @@ namespace Platform } return TemperatureUnit::Celsius; } + + bool ProcessIsElevated() + { +# ifndef __EMSCRIPTEN__ + return (geteuid() == 0); +# else + return false; +# endif // __EMSCRIPTEN__ + } } // namespace Platform #endif diff --git a/src/openrct2/platform/Platform.Win32.cpp b/src/openrct2/platform/Platform.Win32.cpp index 18846b8aa8..d7c04f04b8 100644 --- a/src/openrct2/platform/Platform.Win32.cpp +++ b/src/openrct2/platform/Platform.Win32.cpp @@ -802,6 +802,26 @@ namespace Platform return TemperatureUnit::Celsius; } + + bool ProcessIsElevated() + { + BOOL isElevated = FALSE; + HANDLE hToken = nullptr; + if (OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY, &hToken)) + { + TOKEN_ELEVATION Elevation; + DWORD tokenSize = sizeof(TOKEN_ELEVATION); + if (GetTokenInformation(hToken, TokenElevation, &Elevation, sizeof(Elevation), &tokenSize)) + { + isElevated = Elevation.TokenIsElevated; + } + } + if (hToken) + { + CloseHandle(hToken); + } + return isElevated; + } } // namespace Platform #endif diff --git a/src/openrct2/platform/Platform2.h b/src/openrct2/platform/Platform2.h index b799d80fd7..a78fba368d 100644 --- a/src/openrct2/platform/Platform2.h +++ b/src/openrct2/platform/Platform2.h @@ -53,6 +53,7 @@ namespace Platform bool FindApp(std::string_view app, std::string* output); int32_t Execute(std::string_view command, std::string* output = nullptr); + bool ProcessIsElevated(); bool OriginalGameDataExists(std::string_view path); diff --git a/src/openrct2/platform/Posix.cpp b/src/openrct2/platform/Posix.cpp index 66e5d18703..0bfa9195c0 100644 --- a/src/openrct2/platform/Posix.cpp +++ b/src/openrct2/platform/Posix.cpp @@ -185,15 +185,6 @@ datetime64 platform_get_datetime_now_utc() return utcNow; } -bool platform_process_is_elevated() -{ -# ifndef __EMSCRIPTEN__ - return (geteuid() == 0); -# else - return false; -# endif // __EMSCRIPTEN__ -} - std::string platform_get_rct1_steam_dir() { return "app_285310" PATH_SEPARATOR "depot_285311"; diff --git a/src/openrct2/platform/Windows.cpp b/src/openrct2/platform/Windows.cpp index 150139d1b9..7fdbf8a754 100644 --- a/src/openrct2/platform/Windows.cpp +++ b/src/openrct2/platform/Windows.cpp @@ -226,26 +226,6 @@ datetime64 platform_get_datetime_now_utc() return utcNow; } -bool platform_process_is_elevated() -{ - BOOL isElevated = FALSE; - HANDLE hToken = nullptr; - if (OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY, &hToken)) - { - TOKEN_ELEVATION Elevation; - DWORD tokenSize = sizeof(TOKEN_ELEVATION); - if (GetTokenInformation(hToken, TokenElevation, &Elevation, sizeof(Elevation), &tokenSize)) - { - isElevated = Elevation.TokenIsElevated; - } - } - if (hToken) - { - CloseHandle(hToken); - } - return isElevated; -} - /////////////////////////////////////////////////////////////////////////////// // URI protocol association setup /////////////////////////////////////////////////////////////////////////////// diff --git a/src/openrct2/platform/platform.h b/src/openrct2/platform/platform.h index bdf34c1a32..b711360e88 100644 --- a/src/openrct2/platform/platform.h +++ b/src/openrct2/platform/platform.h @@ -99,7 +99,6 @@ void platform_sleep(uint32_t ms); void platform_get_user_directory(utf8* outPath, const utf8* subDirectory, size_t outSize); bool platform_open_common_file_dialog(utf8* outFilename, file_dialog_desc* desc, size_t outSize); utf8* platform_open_directory_browser(const utf8* title); -bool platform_process_is_elevated(); bool platform_get_steam_path(utf8* outPath, size_t outSize); std::string platform_get_rct1_steam_dir(); std::string platform_get_rct2_steam_dir();