如何在普通命令提示符上使用命令行打开提升的命令提示符?
例如,我使用runas /username:admin cmd
,但打开的cmd似乎没有被提升权限!有什么解决办法吗?
我遇到了相同的问题,唯一能够从CMD中以管理员身份打开CMD的方式是执行以下步骤:
powershell -Command "Start-Process cmd -Verb RunAs"
并按下 Enter我没有足够的声望在置顶答案下添加评论,但是通过使用别名功能,您只需键入以下内容即可获得相同的效果:
powershell "start cmd -v runAs"
这只是user3018703卓越解决方案的简化版本:
powershell -Command "Start-Process cmd -Verb RunAs"
-v
不再是 -Verb
的快捷方式,因为 -Verb
和 -Verbose
之间存在歧义,因此需要明确拼写 -Verb
。 - jcaronpowershell "start \"cmd\" \"/C echo \\"hi && pause\\"\" -v runAs"
- Rashi Abramsonsudo.bat
的文件(您可以将sudo
替换为任何想要的名称),并添加以下内容:
powershell.exe -Command "Start-Process cmd \"/k cd /d %cd%\" -Verb RunAs"
sudo.bat
移动到PATH
中的一个文件夹中;如果您不知道这是什么意思,只需将这些文件移动到c:\windows\
即可。sudo
即可运行此命令(这是最好的部分 :))sudo.bat
的文件(您可以将sudo
替换为任何想要的名称),并添加以下内容:
nircmdc elevate cmd /k "cd /d %cd%"
nircmdc.exe
和sudo.bat
移动到PATH
中的一个文件夹中;如果您不知道这是什么意思,只需将这些文件移动到c:\windows\
即可。sudo
即可运行此命令(这是最好的部分 :))nircmdc elevate route delete 0.0.0.0 mask 0..0.0 192.168.1.1
终于奏效了。其他使用 runas /user:...
的方法会提示输入密码,尽管已经是管理员身份(批处理模式被阻止)。 - Marcosnircmd
后,想要使其像Linux中的sudo
一样运行,请在您的路径中创建一个名为sudo.bat
的文件,并将以下内容复制进去:nircmd elevate %*
。然后您就可以执行类似于sudo net stop W3SVC
的命令了。 - Kipwindosu
:) - Finlay Roelofs我经常使用 Nirsoft 程序(例如 nircmdc)和 Sysinternals 程序(例如 psexec),它们非常有帮助。
但是,如果您不想或者不能下载第三方程序,这里有另一种纯 Windows 的方式。
简短回答:当您处于管理员权限时,可以创建一个带有提升权限的预定任务,稍后在非管理员权限下调用。
中等长度的回答:当您处于管理员权限时,可以创建任务(但我更喜欢任务计划程序 GUI):
schtasks /create /sc once /tn cmd_elev /tr cmd /rl highest /st 00:00
之后,无需提升权限,使用以下命令调用:
schtasks /run /tn cmd_elev
长篇回答: 有很多琐碎的细节; 可以参考我的博客文章 "无需UAC启动程序,在系统启动和批处理文件中非常有用(使用任务计划程序)"
schtasks
是一个内置的 Windows 可执行文件。 - GreatAndPowerfulOzset OLDDIR=%CD%
powershell -Command "Start-Process cmd -ArgumentList '/K cd %OLDDIR%' -Verb RunAs "
Dheeraj Bhaskar提供的两种解决方案都可以工作,但不幸的是它们将导致UAC对话框显示在顶部(按Z顺序),但没有获得焦点(焦点窗口是调用者cmd/powershell窗口),因此我需要抓住鼠标并单击“是”,或使用Alt+Shift+Tab选择UAC窗口。(在Win10x64 v1607 build14393.447上测试;UAC =“[...]不要变暗[...]”。)
以下解决方案有点笨拙,因为它使用了两个文件,但它保留了正确的焦点顺序,因此不需要额外的鼠标/键盘操作(除了确认UAC对话框:Alt+Y)。
%SystemRoot%\System32\cmd.exe /k "cd /d"
@start cmdadm.lnk %cd%
使用su
运行。
通过使用/savecred
开关,使批处理文件保存实际管理员帐户的凭据。这将在第一次提示输入凭据后将加密密码存储在凭据管理器中。然后,在所有后续运行批处理时,它将作为完整的管理员运行,但不提示输入凭据,因为他们被加密存储在凭据管理器中,终端用户无法获得密码。以下内容将打开具有完全管理员权限的升级CMD,并仅在第一次提示输入密码:
START c:\Windows\System32\runas.exe /user:Administrator /savecred cmd.exe
.\psexec.exe -accepteula -h -u "$username" -p "$password" cmd.exe
Dheeraj Bhaskar在使用PowerShell时的方法存在一个问题,至少在Windows 10的PowerShell版本中存在一个缺失的空格。
他的sudo.bat中的命令行应该为
powershell.exe -Command "Start-Process cmd \"/k cd /d %cd% \" -Verb RunAs"