diff options
Diffstat (limited to 'src/burn/engine/engine.cpp')
-rw-r--r-- | src/burn/engine/engine.cpp | 23 |
1 files changed, 3 insertions, 20 deletions
diff --git a/src/burn/engine/engine.cpp b/src/burn/engine/engine.cpp index 89082a88..48196655 100644 --- a/src/burn/engine/engine.cpp +++ b/src/burn/engine/engine.cpp | |||
@@ -893,7 +893,7 @@ static HRESULT ProcessMessage( | |||
893 | break; | 893 | break; |
894 | 894 | ||
895 | case WM_BURN_ELEVATE: | 895 | case WM_BURN_ELEVATE: |
896 | hr = CoreElevate(pEngineState, reinterpret_cast<HWND>(pmsg->lParam)); | 896 | hr = CoreElevate(pEngineState, WM_BURN_ELEVATE, reinterpret_cast<HWND>(pmsg->lParam)); |
897 | break; | 897 | break; |
898 | 898 | ||
899 | case WM_BURN_APPLY: | 899 | case WM_BURN_APPLY: |
@@ -1069,26 +1069,10 @@ static HRESULT Restart( | |||
1069 | ) | 1069 | ) |
1070 | { | 1070 | { |
1071 | HRESULT hr = S_OK; | 1071 | HRESULT hr = S_OK; |
1072 | HANDLE hProcessToken = NULL; | ||
1073 | TOKEN_PRIVILEGES priv = { }; | ||
1074 | DWORD dwRetries = 0; | 1072 | DWORD dwRetries = 0; |
1075 | 1073 | ||
1076 | if (!::OpenProcessToken(::GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &hProcessToken)) | 1074 | hr = ProcEnablePrivilege(::GetCurrentProcess(), SE_SHUTDOWN_NAME); |
1077 | { | 1075 | ExitOnFailure(hr, "Failed to enable shutdown privilege in process token."); |
1078 | ExitWithLastError(hr, "Failed to get process token."); | ||
1079 | } | ||
1080 | |||
1081 | priv.PrivilegeCount = 1; | ||
1082 | priv.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; | ||
1083 | if (!::LookupPrivilegeValueW(NULL, L"SeShutdownPrivilege", &priv.Privileges[0].Luid)) | ||
1084 | { | ||
1085 | ExitWithLastError(hr, "Failed to get shutdown privilege LUID."); | ||
1086 | } | ||
1087 | |||
1088 | if (!::AdjustTokenPrivileges(hProcessToken, FALSE, &priv, sizeof(TOKEN_PRIVILEGES), NULL, 0)) | ||
1089 | { | ||
1090 | ExitWithLastError(hr, "Failed to adjust token to add shutdown privileges."); | ||
1091 | } | ||
1092 | 1076 | ||
1093 | pEngineState->fRestarting = TRUE; | 1077 | pEngineState->fRestarting = TRUE; |
1094 | CoreUpdateRestartState(pEngineState, BURN_RESTART_STATE_REQUESTING); | 1078 | CoreUpdateRestartState(pEngineState, BURN_RESTART_STATE_REQUESTING); |
@@ -1147,7 +1131,6 @@ static HRESULT Restart( | |||
1147 | } | 1131 | } |
1148 | 1132 | ||
1149 | LExit: | 1133 | LExit: |
1150 | ReleaseHandle(hProcessToken); | ||
1151 | return hr; | 1134 | return hr; |
1152 | } | 1135 | } |
1153 | 1136 | ||