diff options
author | psychocrypt <psychocryptHPC@gmail.com> | 2017-12-22 09:35:42 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-12-22 09:35:42 +0100 |
commit | bbba9467ad77f160295e3e38a91727952c66aa7d (patch) | |
tree | e86a6eb475ce874ce3bcfda82193031774f93c3d /xmrstak/misc/uac.hpp | |
parent | e99da8b68302a310644648e2864903a404fef9fe (diff) | |
parent | c4391ac6f3239d81093449948d16b2233cacdb3f (diff) | |
download | xmr-stak-bbba9467ad77f160295e3e38a91727952c66aa7d.zip xmr-stak-bbba9467ad77f160295e3e38a91727952c66aa7d.tar.gz |
Merge pull request #649 from fireice-uk/topic-fix-uac
Stop UAC popup for elevated ctx
Diffstat (limited to 'xmrstak/misc/uac.hpp')
-rw-r--r-- | xmrstak/misc/uac.hpp | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/xmrstak/misc/uac.hpp b/xmrstak/misc/uac.hpp index fdf3be9..55c5f1a 100644 --- a/xmrstak/misc/uac.hpp +++ b/xmrstak/misc/uac.hpp @@ -1,4 +1,9 @@ #pragma once + +#ifdef _WIN32 +#include "xmrstak/misc/console.hpp" + +#include <string> #include <windows.h> BOOL IsElevated() @@ -17,18 +22,18 @@ BOOL IsElevated() return fRet; } -BOOL SelfElevate(const char* my_path) +BOOL SelfElevate(const char* my_path, const std::string& params) { if (IsElevated()) return FALSE; SHELLEXECUTEINFO shExecInfo = { 0 }; shExecInfo.cbSize = sizeof(SHELLEXECUTEINFO); - shExecInfo.fMask = NULL; + shExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS; shExecInfo.hwnd = NULL; shExecInfo.lpVerb = "runas"; shExecInfo.lpFile = my_path; - shExecInfo.lpParameters = NULL; + shExecInfo.lpParameters = params.c_str(); shExecInfo.lpDirectory = NULL; shExecInfo.nShow = SW_SHOW; shExecInfo.hInstApp = NULL; @@ -36,9 +41,11 @@ BOOL SelfElevate(const char* my_path) if (!ShellExecuteEx(&shExecInfo)) return FALSE; - // Hide our window and loiter in the background to make scripting easier - // ShowWindow(GetConsoleWindow(), SW_HIDE); - // WaitForSingleObject(shExecInfo.hProcess, INFINITE); + // Loiter in the background to make scripting easier + printer::inst()->print_msg(L0, "This window has been opened because xmr-stak needed to run as administrator. It can be safely closed now."); + WaitForSingleObject(shExecInfo.hProcess, INFINITE); + std::exit(0); return TRUE; } +#endif |