diff --git a/Source/Core/WinUpdater/Main.cpp b/Source/Core/WinUpdater/Main.cpp index caa9f40958..85b29e8226 100644 --- a/Source/Core/WinUpdater/Main.cpp +++ b/Source/Core/WinUpdater/Main.cpp @@ -31,7 +31,15 @@ int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PWSTR pCmdLine // Test for write permissions bool need_admin = false; - FILE* test_fh = fopen("Updater.log", "w"); + auto path = GetModuleName(hInstance); + if (!path) + { + UI::Error("Failed to get updater filename."); + return 1; + } + + FILE* test_fh = + _wfopen((std::filesystem::path(*path).parent_path() / "Updater.log").c_str(), L"w"); if (test_fh == nullptr) need_admin = true; @@ -47,13 +55,6 @@ int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PWSTR pCmdLine return 1; } - auto path = GetModuleName(hInstance); - if (!path) - { - MessageBox(nullptr, L"Failed to get updater filename.", L"Error", MB_ICONERROR); - return 1; - } - // Relaunch the updater as administrator ShellExecuteW(nullptr, L"runas", path->c_str(), pCmdLine, NULL, SW_SHOW); return 0;