Add elevation support to RunCommand#7
Merged
Conversation
Adds an Elevation enum and overloads to Execute/ExecuteAsync that let callers request elevated privileges. On Windows, Elevation.Elevated launches the process with the runas verb via UseShellExecute, which triggers a UAC prompt; output redirection is disabled in that mode since it is incompatible with UseShellExecute. On non-Windows the value is a no-op, leaving sudo prefixing to the caller.
Replaces the early return in the elevated branch with an if/else so the method has one exit point, making the control flow easier to follow.
This was referenced May 13, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Elevationenum (Default,Elevated) and overloads toExecute/ExecuteAsyncthat accept it.Elevation.Elevatedlaunches the process with therunasverb viaUseShellExecute = true, prompting the user for UAC consent. Output redirection is disabled in this mode becauseUseShellExecuteis incompatible withRedirectStandardOutput/Error, so theOutputHandleris not invoked when elevated.sudothemselves. Auto-prefixing was rejected as surprising and brittle for non-interactive sudo configurations.Test plan
OutputHandler(existing tests cover this path).RunCommand.Execute("whoami /groups", Elevation.Elevated)and confirm the UAC prompt appears and the process exits 0.Elevation.Elevated+ anOutputHandler, confirm the handler is not invoked (documented behavior) and the exit code still propagates.Elevation.Elevatedruns identically toElevation.Default(flag is ignored).Generated by Claude Code