Create log for elevated process.
Sean Hall committed
Aug 19, 2022 at 13:48 UTC
bbc36178172e4198351f2f84a91faf56c65e1475
3 files changed
+22
src/burn/engine/engine.cpp
+12
@@ -106,6 +106,7 @@ extern "C" HRESULT EngineRun(
106
LPWSTR sczExePath = NULL;
107
BOOL fRunUntrusted = FALSE;
108
BOOL fRunNormal = FALSE;
109
+ BOOL fRunElevated = FALSE;
110
BOOL fRunRunOnce = FALSE;
111
BOOL fRestart = FALSE;
112
@@ -220,6 +221,8 @@ extern "C" HRESULT EngineRun(
221
break;
222
223
case BURN_MODE_ELEVATED:
224
+ fRunElevated = TRUE;
225
+
226
hr = RunElevated(hInstance, wzCommandLine, &engineState);
227
ExitOnFailure(hr, "Failed to run per-machine mode.");
228
break;
@@ -320,6 +323,11 @@ LExit:
323
{
324
LogId(REPORT_STANDARD, MSG_EXITING_RUN_ONCE, FAILED(hr) ? (int)hr : *pdwExitCode);
325
}
326
+ else if (fRunElevated)
327
+ {
328
+ LogId(REPORT_STANDARD, MSG_EXITING_ELEVATED, FAILED(hr) ? (int)hr : *pdwExitCode);
329
+ }
330
+
331
332
if (fLogInitialized)
333
{
@@ -639,6 +647,10 @@ static HRESULT RunElevated(
647
HRESULT hr = S_OK;
648
HANDLE hLock = NULL;
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
+
654
// connect to per-user process
655
hr = PipeChildConnect(&pEngineState->companionConnection, TRUE);
656
ExitOnFailure(hr, "Failed to connect to unelevated process.");
src/burn/engine/engine.mc
+7
@@ -170,6 +170,13 @@ Language=English
170
Failed to use folder as machine package cache: %2!ls!, encountered error: %1!ls!.
171
.
172
173
+MessageId=21
174
+Severity=Success
175
+SymbolicName=MSG_EXITING_ELEVATED
176
+Language=English
177
+Exit code: 0x%1!x!
178
+.
179
+
180
MessageId=51
181
Severity=Error
182
SymbolicName=MSG_FAILED_PARSE_CONDITION
src/burn/engine/logging.cpp
+3
@@ -77,6 +77,9 @@ extern "C" HRESULT LoggingOpen(
77
case BURN_MODE_UNTRUSTED:
78
wzPostfix = L".cleanroom";
79
break;
80
+ case BURN_MODE_ELEVATED:
81
+ wzPostfix = L".elevated";
82
+ break;
83
case BURN_MODE_RUNONCE:
84
wzPostfix = L".runonce";
85
break;