From bbc36178172e4198351f2f84a91faf56c65e1475 Mon Sep 17 00:00:00 2001 From: Sean Hall Date: Fri, 19 Aug 2022 13:48:52 -0500 Subject: Create log for elevated process. --- src/burn/engine/engine.cpp | 12 ++++++++++++ src/burn/engine/engine.mc | 7 +++++++ src/burn/engine/logging.cpp | 3 +++ 3 files changed, 22 insertions(+) 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( LPWSTR sczExePath = NULL; BOOL fRunUntrusted = FALSE; BOOL fRunNormal = FALSE; + BOOL fRunElevated = FALSE; BOOL fRunRunOnce = FALSE; BOOL fRestart = FALSE; @@ -220,6 +221,8 @@ extern "C" HRESULT EngineRun( break; case BURN_MODE_ELEVATED: + fRunElevated = TRUE; + hr = RunElevated(hInstance, wzCommandLine, &engineState); ExitOnFailure(hr, "Failed to run per-machine mode."); break; @@ -320,6 +323,11 @@ LExit: { LogId(REPORT_STANDARD, MSG_EXITING_RUN_ONCE, FAILED(hr) ? (int)hr : *pdwExitCode); } + else if (fRunElevated) + { + LogId(REPORT_STANDARD, MSG_EXITING_ELEVATED, FAILED(hr) ? (int)hr : *pdwExitCode); + } + if (fLogInitialized) { @@ -639,6 +647,10 @@ static HRESULT RunElevated( HRESULT hr = S_OK; HANDLE hLock = NULL; + // Initialize logging. + hr = LoggingOpen(&pEngineState->log, &pEngineState->internalCommand, &pEngineState->command, &pEngineState->variables, pEngineState->registration.sczDisplayName); + ExitOnFailure(hr, "Failed to open elevated log."); + // connect to per-user process hr = PipeChildConnect(&pEngineState->companionConnection, TRUE); 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 Failed to use folder as machine package cache: %2!ls!, encountered error: %1!ls!. . +MessageId=21 +Severity=Success +SymbolicName=MSG_EXITING_ELEVATED +Language=English +Exit code: 0x%1!x! +. + MessageId=51 Severity=Error SymbolicName=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( case BURN_MODE_UNTRUSTED: wzPostfix = L".cleanroom"; break; + case BURN_MODE_ELEVATED: + wzPostfix = L".elevated"; + break; case BURN_MODE_RUNONCE: wzPostfix = L".runonce"; break; -- cgit v1.2.3-55-g6feb