рдХрд▓, рдореИрдВрдиреЗ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕реЗ рдПрдХ рдкреНрд░рд╢рд╛рд╕рдХ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╕рдордп рдмрд┐рддрд╛рдпрд╛ред рдореБрдЭреЗ рд░рд╛рдЗрдЯ-рдХреНрд▓рд┐рдХ> "рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд▓рд╛рдПрдВ" рдХреЗ рдмрд░рд╛рдмрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА:
рддрд╛рдХрд┐ рдЬрдм рдЖрдк рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рддреЛ UAC рд╕реЗ рдПрдХ рдЕрдиреБрд░реЛрдз
Runas.exe рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдореЗрд░реЗ рдЕрдиреБрд░реВрдк рдирд╣реАрдВ рдереА, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдкрд╖реНрдЯ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо, рдкрд╛рд╕рд╡рд░реНрдб рдпрд╛ рд╕рд╣реЗрдЬреЗ рдЧрдП рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдореИрдВрдиреЗ рддреГрддреАрдп-рдкрдХреНрд╖ рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдкрд░ рднреА рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ - рдореИрдВ рд╕реНрд╡рдпрдВ рдХреЛрдб рдореЗрдВ рдЧрд▓рддрд┐рдпрд╛рдБ рдХрд░реВрдВрдЧрд╛, рдореБрдЭреЗ рдЕрдЬрдирдмрд┐рдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ? :)
рдХрдИ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рдЖрдЬрд╝рдорд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВ PowerShell рдХреЗ рд▓рд┐рдП рд╣рд╛рде рд╕реЗ рд▓рд┐рдЦреА рдЧрдИ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░ рдмрд╕ рдЧрдпрд╛:
$ErrorActionPreference = 'Stop' $si = New-Object System.Diagnostics.ProcessStartInfo $si.FileName = $args[0] $si.Arguments = [String]::Join(' ', $args[1..($args.Count - 1)]) $si.Verb = 'RunAs' $si.UseShellExecute = $true $process = [System.Diagnostics.Process]::Start($si) # Very strange code... # But I spy it in MSBuild... # I hope these guys know what they are doing! :) $process.WaitForExit() do { [System.Threading.Thread]::Sleep(0) } while (!$process.HasExited) Exit $process.ExitCode
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рдкреИрд░рд╛рдореАрдЯрд░ lpVerb = "RunAs" рдХреЗ рд╕рд╛рде
ShellExecuteEx () рдХреЗ рд▓рд┐рдП рдПрдХ рдХреЙрд▓ рд╣реИред
рдореИрдВ
рд╕реНрдЯрд╛рд░реНрдЯ-рдкреНрд░реЛрд╕реЗрд╕ рдХрдорд╛рдВрдбрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдлрд▓ рдирд╣реАрдВ рд╣реБрдЖ, рдЬреИрд╕рд╛ рдХрд┐ -Verb RunAs рдФрд░ -Wait рдкреИрд░рд╛рдореАрдЯрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╕рдордп, рдпрд╣ рдПрдХ рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ:
PS C: \ Users \ psg> Start-Process 'cmd.exe' -Verb RunAs -Wait
рдкреНрд░рд╛рд░рдВрдн-рдкреНрд░рдХреНрд░рд┐рдпрд╛: рдкреНрд░рд╡реЗрд╢ рдирд┐рд╖реЗрдз рд╣реИ
рд▓рд╛рдЗрди рдореЗрдВ: 1 рдЪрд╛рд░: 14
+ рдкреНрд░рд╛рд░рдВрдн-рдкреНрд░рдХреНрд░рд┐рдпрд╛ <<<< 'cmd.exe' -Verb RunAs -Wait
+ CategoryInfo: NotSpecified: (:) [рдкреНрд░рд╛рд░рдВрдн-рдкреНрд░рдХреНрд░рд┐рдпрд╛], Win32Exception
+ FullQualifiedErrorId: System.ComponentModel.Win32Exception, Microsoft.PowerShell.Commands.StartProcessCommand
рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╢рд╛рдпрдж рдореИрдВ рд╕рд┐рд░реНрдл рдмреБрд░реА рддрд░рд╣ рд╕реЗ рджреЗрдЦ рд░рд╣рд╛ рдерд╛, рдФрд░ рдореБрдЭреЗ рдЬреЛ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдЪрд╛рд╣рд┐рдП рд╡рд╣ рдЕрднреА рднреА рдореМрдЬреВрдж рд╣реИ? .. рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдореБрдЭреЗ рдЖрдкрдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдкрд░ рдЦреБрд╢реА рд╣реЛрдЧреА!