From f26941b566ffaee8e33b0ae8a05a9c438d9a574a Mon Sep 17 00:00:00 2001 From: Richard Stanway Date: Sun, 14 Jun 2020 01:14:22 +0200 Subject: [PATCH] UI/updater: Exit with error if elevation failed In rare cases, "runas" would somehow launch the updater as a non-admin user again, resulting in a loop where the updater constantly spawns processes. Fixes https://github.com/obsproject/obs-studio/issues/2984 --- UI/win-update/updater/updater.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/UI/win-update/updater/updater.cpp b/UI/win-update/updater/updater.cpp index 1fcd0ace..e9a8e1a2 100644 --- a/UI/win-update/updater/updater.cpp +++ b/UI/win-update/updater/updater.cpp @@ -1629,6 +1629,17 @@ int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE, LPWSTR lpCmdLine, int) is32bit = wcsstr(cwd, L"bin\\32bit") != nullptr; if (!HasElevation()) { + + WinHandle hMutex = OpenMutex( + SYNCHRONIZE, false, L"OBSUpdaterRunningAsNonAdminUser"); + if (hMutex) { + MessageBox( + nullptr, L"Updater Error", + L"OBS Studio Updater must be run as an administrator.", + MB_ICONWARNING); + return 2; + } + HANDLE hLowMutex = CreateMutexW( nullptr, true, L"OBSUpdaterRunningAsNonAdminUser"); -- GitLab