如何从具有提升权限的命令行运行程序

Luk*_*sky 56 windows privileges administrator

当我已经在非提升的命令行中时,有没有办法以提升的权限运行程序或命令?

与单击程序快捷方式并选择Run as administrator时执行的操作完全相同。

运行方式命令可能不是一个解决方案-它要求输入密码,但我只是想在UAC对话框。

小智 67

在 PowerShell 中有一种方法可以做到这一点

PS> Start-Process powershell -Verb runAs
Run Code Online (Sandbox Code Playgroud)

  • 似乎工作正常。从命令行,您可以执行例如`powershell -Command "Start-Process 'C:\program.exe' -Verb runAs"` (26认同)
  • 这应该被标记为正确/最佳答案 IMO - 它无需 3rd 方实用程序即可工作。 (8认同)
  • 在最简单的情况下建立@marsze - Fwiw,[参数](https://msdn.microsoft.com/en-us/powershell/reference/5.1/microsoft.powershell.management/start-process#-argumentlist)成他们自己的单引号值,例如`powershell -Command "Start-Process 'gvim' 'c:\windows\system32\drivers\etc\hosts' -Verb runAs"`。谢谢! (5认同)

Jef*_*ffP 15

如果您使用 /uac 开关,这个实用程序 -隐藏开始-看起来像您希望的那样。这是一个示例命令行:

hstart /UAC "notepad.exe"
Run Code Online (Sandbox Code Playgroud)

这将弹出 UAC 对话框,而不是像 runas 那样要求输入密码。

在此处输入图片说明

  • 警告:那个小工具是 20 美元。对于那些口袋很小的人,请改用 RunAdmin :) (2认同)

Nic*_*lay 9

基于Rustam回答,您可以:

  • su.bat在默认 %PATH% 的某处创建一个批处理文件,内容如下:
@echo off
setlocal
set cmd=%*
if not defined cmd set cmd=%ComSpec%
powershell iex """start -v runas $Env:cmd"""
Run Code Online (Sandbox Code Playgroud)
  • 将此函数添加到您的 PowerShell $profilefunction su {start -verb runas @args}

现在您可以su <command> [parameters]在任一 shell 中发出!