如何始终以管理员身份运行命令提示符?


103

作为开发人员,我经常出于各种目的需要打开命令提示符。例如,我iisreset用来重新启动本地Web服务器。

我通常以以下两种方式之一打开命令窗口:

  1. Win,键入“ cmd”,然后按Enter
  2. 在资源管理器中,按住Shift并右键单击一个文件夹,然后选择“在此处打开命令窗口”

但是,当我以上述任何一种方式打开命令窗口时,我都没有获得应得的全部管理员权限。

我是管理员,但cmd.exe不知道

为了运行仅管理员的应用程序,我必须以这种相对费力的方式打开命令行:

  1. Win,输入“ cmd”
  2. 等待菜单填充
  3. 将手从键盘上移开,然后将其放在鼠标上
  4. 右键单击“ cmd.exe”菜单项
  5. 选择“以管理员身份运行”

由于以下几个原因,这是不可接受的:

  • 该窗口始终在C:\ windows \ system32中打开,而不是在我的Users目录(如在批准的技术1中)或我想在其中的文件夹(如在批准的技术2中)中打开。因此,我经常必须更改目录才能到达我想去的地方。
  • 这个过程比我的两种首选方法都慢了几毫秒。每天要执行几次,在我职业生涯的剩余时间里,每天都会花费大约十天的时间来浪费单击,等待和更改目录的时间。
  • 作为程序员,执行毫无意义的机器人任务会给我带来极大的情感痛苦。
  • 作为程序员,举起我的手是一项艰巨的任务,这会给我带来极大的身体痛苦。

这就是为什么我要寻找一种解决方案,让批准的技术1和2打开​​管理员命令提示符。

许多程序使您可以从“属性”菜单中永久更改其默认特权级别。命令提示符不是那些程序之一。

在此处输入图片说明

默认情况下,如何使命令窗口以管理员身份运行(即使使用上下文菜单选项“在此处打开命令窗口”)?


为什么不只将UAC更改为仅提升?
surfasb 2012年

我的UAC滑块上没有看到“仅提升”选项。您是否在参考“用户帐户控制设置”窗口之外的内容?
凯文(Kevin)

6
我认为是Hammer Time ...
ThunderToes 2014年

Answers:


88

要回答问题的第一部分,请按Windows键并键入“ CMD”,然后按Ctrl+ Shift+ Enter以管理员身份打开。

要回答问题的第二部分,请将以下内容粘贴到记事本中,并以“ .reg”扩展名保存:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\shell\runas]
@="Open Command Window Here as Administrator"

[HKEY_CLASSES_ROOT\Directory\shell\runas\command]
@="cmd.exe /s /k pushd \"%V\""

然后运行文件。它将更改合并到注册表中,并将选项添加到上下文菜单中。(不需要Shift键。)


7
注意; 在这两种情况下,您仍然都必须接受UAC提示。
Synetech 2012年

1
在Windows注册表编辑不工作8
骑自行车约翰·

注册表补丁适用于服务器2012 R2
菲亚特

它在Windows 7上对我不起作用
Hello Universe

1
如果你不运行reg文件后,查看命令,注销的Windows,并重新登录。
trebormf

38

许多程序使您可以从“属性”菜单中永久更改其默认特权级别。命令提示符不是那些程序之一。

Windows的所有可执行文件的“ 兼容性”选项卡完全被禁用:

在此处输入图片说明

要为Windows可执行文件设置管理特权,您需要创建一个快捷方式并使用“ 快捷方式”选项卡→ Advanced(“开始”菜单中的命令提示符项已经是快捷方式):

在此处输入图片说明

该窗口始终在C:\ windows \ system32中打开,而不是在我的Users目录(如在批准的技术1中)或我要位于的文件夹(在已批准的技术2中)中打开。因此,我经常必须更改目录才能到达我想去的地方。

这是正常现象,这是有道理的,因为如果您打开管理员命令提示符,则可能是在执行某些需要管理员权限的系统操作,而不是已经拥有权限的用户操作。

您可以通过添加/编辑Autorun注册表项来全局设置默认目录(使用环境变量,它甚至不必是可扩展的字符串):

REGEDIT4
[HKEY_CURRENT_USER\Software\Microsoft\Command Processor]
"Autorun"="cd /d \"%userprofile%\""

现在,任何时候使用任何方法打开命令提示符将自动默认为用户配置文件目录(从技术上来说,更改目录为)。

更好的是,您可以添加其他命令,以便在每次使用&操作员打开命令提示符时(例如cd /d %userprofile% & cls & dir)自动运行。此外,您可以在HKLM分支下的同一键中设置相同的值,以为所有用户设置该值。


请注意,您仍然必须接受UAC提示。不幸的是,没有(当前?)无法创建受信任程序的UAC“白名单”,以便可以以管理员身份运行命令提示符而不必接受提示。这给您留下(a)几种选择。

  • 您可以完全关闭或关闭UAC(useraccountcontrolsettings.exe
  • 您可以使用特权提升程序,例如Elevator aka Elevate MeElevation PowerToy
  • 创建一个提升的计划 任务,为其输入凭据(一次),然后创建该任务的快捷方式

在第一种情况下,您完全避免使用UAC,而在后两种情况下,创建快捷方式时只需输入一次凭据。


通过自动运行设置当前目录存在问题。设置该值后,cd /d "%userprofile%"不仅会在打开新的控制台窗口时自动运行,还会在每次调用新的执行线程时自动运行。这可能会导致问题,例如for /f循环。在cmd提示下尝试:cd "\Program Files"然后for /f "delims=" %I in ('cmd /c cd') do @echo %I。您会看到for /f循环认为它的当前工作目录是$ home,而不是Program Files。修改cmd快捷方式并将目标设置为较为安全"%comspec%" /k cd /d "%userprofile%"
rojo 2015年

如果要在打开新的控制台窗口时保留Windows版本和版权信息,请将快捷方式的目标设置为%comspec% /c cd /d "%USERPROFILE%" & %comspec%
rojo 2015年

+1用于非注册表编辑答案。另一个答案在2012年可能还不错,但我今天不想在Windows 10上尝试。
艾伦(Alan)

19

我使用的解决方案是通过打开开始菜单,键入'cmd'并按Ctrl+ Shift+ 来打开命令提示符Enter。这将导致所选程序以管理员身份启动。


1
是否有不需要“搜索”的替代方法?(因为据我所知,实际上在框中键入内容确实可以进行搜索)
Pacerier

我只知道Luke的答案是其他方式,请禁用UAC。搜索cmd的速度非常快,在找到它之前甚至无法按Ctrl + Shift + Enter。
Dracs

我一直在客户计算机上这样做。它发现CMD非常快
加拿大路加福音

它将以管理员身份加载吗?
barlop 2011年

@barlop是的,该热键(Ctrl + Shift + Enter)将以管理员身份在“开始”菜单中启动突出显示的程序。
Dracs

12

CMD在每次单击时以管理员身份自动运行(而无需右键单击或创建其他快捷方式),有一个简单的解决方法:

  1. 注册表编辑器中,导航至:
    HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers

    • 如果没有Layers文件夹,则必须创建一个文件夹并命名:
      右键单击AppCompatFlags文件夹,选择NewKey
  2. 右键单击Layers,选择 NewString Value。将新字符串值的名称设置为(CMD.EXE)命令提示符(即C:\Windows\System32\cmd.exe)的完整路径

  3. 双击新的字符串值进行修改,然后将“值数据”设置RUNASADMIN

我有同样的烦恼,这对我有用。


11

如果希望CMD.exe始终以管理员身份运行,只需将以下reg代码添加到注册表中:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers]
"C:\\Windows\\System32\\cmd.exe"="~ RUNASADMIN"
"C:\\Windows\\SysWOW64\\cmd.exe"="~ RUNASADMIN"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers]
"C:\\Windows\\System32\\cmd.exe"="~ RUNASADMIN"
"C:\\Windows\\SysWOW64\\cmd.exe"="~ RUNASADMIN"

2
这在Windows 8.1上对我有用。现在,我只是按Windows-R,cmd,Enter。它也可以通过Shift-RightClick>“打开命令窗口”从此处通过File Explorer打开命令窗口。
Troy Gizzi 2015年

1
如果可行,尽管当前接受的版本更长,但这仍是正确的答案。
Xodarap777

这也适用于Windows 10。将内容放入记事本,使用.reg扩展名保存并运行它
Chris Halcrow 17-10-31

4

我使用了一些其他解决方法(除了Jesse提到的工具)。

早在Vista首次发布时,Microsoft便推出了一种“ 提升 ”的PowerToy,它非常有用并且可以完成这项工作,但我相信(未经测试)仍适用于Windows7。将其放到您的路径环境中就可以运行从普通命令提示符下“ elevate iisreset”(甚至从开始/运行或创建快捷方式“ elevate cmd”)


这是下载的直接链接
ashleedawg

4

绕过UAC等所有麻烦的最简单方法是设置任务计划条目,以使用最高特权运行cmd.exe。不要为其创建触发器事件,并确保在“设置”选项卡中选中了“允许任务按需运行”复选框。另外,在“设置”选项卡中,确保将“如果任务已在运行,则适用以下规则”下拉菜单设置为“不启动新实例”。

然后在桌面上创建此快捷方式,然后从那里运行它,或者通过快捷方式热键将快捷方式固定在任务栏上。

我已经在Windows 7系统上完成了它,并且运行良好。


1
糟糕,我忘了说明一件重要的事情。这是任务快捷方式的目标路径。C:\ Windows \ System32 \ schtasks.exe / run / TN“没有UAC的命令提示符”。引号内的文本是您在创建任务时将其命名为任务的名称。
彼得·威尔斯

不要在答案中包含您的电子邮件ID
BlueBerry-Vignesh4303 2013年

2

只需复制并粘贴cmd.exe,然后将其重命名为\ system32 \文件夹中的“ cmda.exe”(337 KB什至没什么大不了...)。cmda.exe属性中的“以管理员身份运行”选项将不再显示为灰色,您可以将其设置为始终以管理员身份运行。现在,您将有两个命令提示符:第一个是常规的,第二个具有(a)dmin特权。在Win搜索栏中键入“ cmda” 就像使用“ cmd” 一样容易!

对于具有管理员权限的上下文菜单中的cmd,请确保已具有cmda.exe,将其添加到新的.reg文件中并启动它

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\Background\shell\cmda]
@="Open command window here (Administrator)"
"HasLUAShield"=""
"Extended"=""

[HKEY_CLASSES_ROOT\Directory\Background\shell\cmda\Command]
@="cmda.exe /s /k pushd \"%V\""

您将在快捷菜单中看到两行相同的行(shift);一个不带高架的命令提示符,另一个带“(管理员)”的命令。

而已...


1

创建cmd.exe的快捷方式,右键单击并选择属性,在“快捷方式”选项卡上选择“高级”,选中“以管理员身份运行”。


1

我认为始终以管理员身份运行cmd的最简单方法是使用以下代码制作.reg文件:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers]
@="C:\\Windows\\System32\\cmd.exe"="RUNASADMIN"

将其粘贴到记事本或其他内容中,然后另存为.reg文件。注意:这使命令提示符以admin身份对所有用户运行。要始终仅以用户身份以管理员身份运行,只需将HKEY_LOCAL_MACHINE更改为HKEY_CURRENT_USER


1

感谢Jesse Brohinsky

更好的版本。它还包括后台目录,该目录使您也可以从文件夹内部打开cmd。同样,您也可以以非管理员身份打开命令提示符。

您也可以禁用AdminApprovalMode。这样,当您成为管理员时,您无需以管理员身份运行。 http://helpdeskgeek.com/windows-7/turn-off-admin-approval-mode-in-windows-7/

Windows Registry Editor Version 5.00
;write minus before to unreg example: [-HKEY_CLASSES_ROOT\Directory\shell\cmdhere]

[HKEY_CLASSES_ROOT\Directory\shell\cmdhere]
@="Open Command Window Here"

[HKEY_CLASSES_ROOT\Directory\shell\cmdhere\command]
@="cmd.exe /s /k pushd \"%V\""

[HKEY_CLASSES_ROOT\Directory\Background\shell\cmdhere]
@="Open Command Window Here"

[HKEY_CLASSES_ROOT\Directory\Background\shell\cmdhere\command]
@="cmd.exe /s /k pushd \"%V\""

[HKEY_CLASSES_ROOT\Directory\shell\runas]
@="Open Command Window Here as Administrator"

[HKEY_CLASSES_ROOT\Directory\shell\runas\command]
@="cmd.exe /s /k pushd \"%V\""

[HKEY_CLASSES_ROOT\Directory\Background\shell\runas]
@="Open Command Window Here as Administrator"

[HKEY_CLASSES_ROOT\Directory\Background\shell\runas\command]
@="cmd.exe /s /k pushd \"%V\""


0

以下对我有用

@echo off
:: BatchGotAdmin
:-------------------------------------
REM  --> Check for permissions
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"

REM --> If error flag set, we do not have admin.
if '%errorlevel%' NEQ '0' (
    echo Requesting administrative privileges...
    goto UACPrompt
) else ( goto gotAdmin )

:UACPrompt
    echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
    echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"

    "%temp%\getadmin.vbs"
    exit /B

:gotAdmin
    if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )
    pushd "%CD%"
    CD /D "%~dp0"
:--------------------------------------

您将得到相同的uac提示,确认要以runas管理员身份登录。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.