Beefy Boxes and Bandwidth Generously Provided by pair Networks
P is for Practical
 
PerlMonks  

Re^2: Windows 7 UAC with elevated privileges

by Corion (Patriarch)
on May 12, 2016 at 07:19 UTC ( [id://1162841]=note: print w/replies, xml ) Need Help??


in reply to Re: Windows 7 UAC with elevated privileges
in thread Windows 7 UAC with elevated privileges

Thank you very much for writing Win32::RunAsAdmin. The one thing I needed which it didn't do was to wait for the elevated process to finish running. I came up with the following Powershell incantation to do that and pass the exit code of the elevated process back:

# Run a process in an elevated window, wait for its exit sub win32_run_elevated { my( $exe, @args ) = @_; my $args = join " ", map { if(/[ "]/) { s!"!\\"!g; qq{"$_"} } else + { $_ }} @args; my $ps1 = sprintf q{powershell -NonInteractive -NoProfile -Command + "$process = Start-Process '%s' -PassThru -ErrorAction Stop -Argument +List '%s' -Verb RunAs -Wait; Exit $process.ExitCode"}, $exe, $args; $ps1 }

I haven't dug deep enough into Application.Process to know whether it can wait for the elevated child as well, and as my target environment has Powershell enabled anyway, using another level of indirection isn't a hurdle for me.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://1162841]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others browsing the Monastery: (3)
As of 2024-04-20 04:29 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found