aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/burn/engine/engine.cpp12
-rw-r--r--src/burn/engine/engine.mc7
-rw-r--r--src/burn/engine/logging.cpp3
3 files changed, 22 insertions, 0 deletions
diff --git a/src/burn/engine/engine.cpp b/src/burn/engine/engine.cpp
index 2d2da1d5..323d2c3a 100644
--- a/src/burn/engine/engine.cpp
+++ b/src/burn/engine/engine.cpp
@@ -106,6 +106,7 @@ extern "C" HRESULT EngineRun(
106 LPWSTR sczExePath = NULL; 106 LPWSTR sczExePath = NULL;
107 BOOL fRunUntrusted = FALSE; 107 BOOL fRunUntrusted = FALSE;
108 BOOL fRunNormal = FALSE; 108 BOOL fRunNormal = FALSE;
109 BOOL fRunElevated = FALSE;
109 BOOL fRunRunOnce = FALSE; 110 BOOL fRunRunOnce = FALSE;
110 BOOL fRestart = FALSE; 111 BOOL fRestart = FALSE;
111 112
@@ -220,6 +221,8 @@ extern "C" HRESULT EngineRun(
220 break; 221 break;
221 222
222 case BURN_MODE_ELEVATED: 223 case BURN_MODE_ELEVATED:
224 fRunElevated = TRUE;
225
223 hr = RunElevated(hInstance, wzCommandLine, &engineState); 226 hr = RunElevated(hInstance, wzCommandLine, &engineState);
224 ExitOnFailure(hr, "Failed to run per-machine mode."); 227 ExitOnFailure(hr, "Failed to run per-machine mode.");
225 break; 228 break;
@@ -320,6 +323,11 @@ LExit:
320 { 323 {
321 LogId(REPORT_STANDARD, MSG_EXITING_RUN_ONCE, FAILED(hr) ? (int)hr : *pdwExitCode); 324 LogId(REPORT_STANDARD, MSG_EXITING_RUN_ONCE, FAILED(hr) ? (int)hr : *pdwExitCode);
322 } 325 }
326 else if (fRunElevated)
327 {
328 LogId(REPORT_STANDARD, MSG_EXITING_ELEVATED, FAILED(hr) ? (int)hr : *pdwExitCode);
329 }
330
323 331
324 if (fLogInitialized) 332 if (fLogInitialized)
325 { 333 {
@@ -639,6 +647,10 @@ static HRESULT RunElevated(
639 HRESULT hr = S_OK; 647 HRESULT hr = S_OK;
640 HANDLE hLock = NULL; 648 HANDLE hLock = NULL;
641 649
650 // Initialize logging.
651 hr = LoggingOpen(&pEngineState->log, &pEngineState->internalCommand, &pEngineState->command, &pEngineState->variables, pEngineState->registration.sczDisplayName);
652 ExitOnFailure(hr, "Failed to open elevated log.");
653
642 // connect to per-user process 654 // connect to per-user process
643 hr = PipeChildConnect(&pEngineState->companionConnection, TRUE); 655 hr = PipeChildConnect(&pEngineState->companionConnection, TRUE);
644 ExitOnFailure(hr, "Failed to connect to unelevated process."); 656 ExitOnFailure(hr, "Failed to connect to unelevated process.");
diff --git a/src/burn/engine/engine.mc b/src/burn/engine/engine.mc
index f5e3ca27..08269ea0 100644
--- a/src/burn/engine/engine.mc
+++ b/src/burn/engine/engine.mc
@@ -170,6 +170,13 @@ Language=English
170Failed to use folder as machine package cache: %2!ls!, encountered error: %1!ls!. 170Failed to use folder as machine package cache: %2!ls!, encountered error: %1!ls!.
171. 171.
172 172
173MessageId=21
174Severity=Success
175SymbolicName=MSG_EXITING_ELEVATED
176Language=English
177Exit code: 0x%1!x!
178.
179
173MessageId=51 180MessageId=51
174Severity=Error 181Severity=Error
175SymbolicName=MSG_FAILED_PARSE_CONDITION 182SymbolicName=MSG_FAILED_PARSE_CONDITION
diff --git a/src/burn/engine/logging.cpp b/src/burn/engine/logging.cpp
index ae056921..885e2c84 100644
--- a/src/burn/engine/logging.cpp
+++ b/src/burn/engine/logging.cpp
@@ -77,6 +77,9 @@ extern "C" HRESULT LoggingOpen(
77 case BURN_MODE_UNTRUSTED: 77 case BURN_MODE_UNTRUSTED:
78 wzPostfix = L".cleanroom"; 78 wzPostfix = L".cleanroom";
79 break; 79 break;
80 case BURN_MODE_ELEVATED:
81 wzPostfix = L".elevated";
82 break;
80 case BURN_MODE_RUNONCE: 83 case BURN_MODE_RUNONCE:
81 wzPostfix = L".runonce"; 84 wzPostfix = L".runonce";
82 break; 85 break;