Windows 下一键以管理员命令运行命令提示符
是的,我已经懒到鼠标都不想(大幅度地)移动了,该怎么办呢?
写在前面
很多时候在使用命令提示符 cmd.exe
的时候,一些操作只能在管理员模式下进行,例如使用 Chocolatey 包管理器安装 Python:choco install python
- 这个时候,“打开 Windows 开始菜单 - 输入 cmd - 右键 - 以管理员命令运行” 这一系列的操作就变得有些烦人。是的,我已经懒到鼠标都不想(大幅度地)移动了,该怎么办呢?
和某位群友交流过后,得知与他不同,由于我在 Windows 上并非使用 Administrator 账号直接登录,而是使用个人有管理员权限的账号,因此打开 cmd
就不能做到直接是管理员。我转战 Google,在一篇文章里了解到,要想做到无 UAC 弹出的 cmd 开启,无论如何需要使用快捷方式(shortcut)。然而作为一个默认隐藏桌面图标,桌面啥都没有的人来说,shortcut 也不适合我。在上述文章的末部,方法五,我发现可以做到通过 Windows 的 Task Scheduler 做到通过一行命令直接用管理员权限开启某一个程序。看到这里我大概就有思路了:先按照这个方法让命令提示符能被一条命令开启,然后创建一个别名,用一个简单的词汇代替复杂的命令,这样以后在 cmd 里如果想升级到管理员权限,直接输入那个简单的词汇,回车即可。
由于我的系统语言是英文,下述内容会直接引用系统显示的相关英文词汇
创建任务
- 首先打开 Windows 菜单,输入 Task Scheduler,左侧侧边栏选择 Task Scheduler (Local) - Task Scheduler Library
- 右侧侧边栏选择 Create Task,在弹出窗口里输入 Task(任务)的名称(例如
cmd-admin
),下方 Configure for 下拉菜单选择你的系统(Windows 10) - 建议在系统的非 C 盘进行这个操作:创建一个文件夹,名称随意(例如
bats
),文件夹里面创建两个文本文档,分别重命名为cmd.bat
和doskey.bat
(可自行改动,记得就好) - 在 cmd.bat 内输入如下内容:由于我习惯使用 Windows Terminal,故此在这一步我用
@echo off
start cmd.exe
EXIT 0start wt.exe
代替了start cmd.exe
;(在这种情况下,有可能需要手动为wt.exe
单独设置 default profile,确保打开的是 cmd)。 - 保存;返回 Task Scheduler,在 Actions 一栏的下方点击 New,在弹出窗口里点击 Program/script 旁边的 Browse,选择刚刚创建的
cmd.bat
- 切换到 Conditions 标签,反选 Power 下的 Start the task only if the computer is on AC power
- 回到 General 标签,Security Options 下选中 Run with highest privileges
- 这个时候,我们就已经可以通过
schtasks /run /tn "cmd-admin"
命令,在有管理员权限的账号下无 UAC 以管理员权限打开一个cmd.exe
或者wt.exe
了。
创建永久 doskey
doskey 是 cmd.exe 的一个 feature,用以临时为命令创建别名;例如在 cmd 里运行 doskey np=notepad.exe
,就等于为 notepad.exe(打开记事本)这个命令创建了一个名为 np
的别名;在同一个 cmd 会话里,这个别名会一直有效。
根据这篇文章,我们可以在每次 cmd 运行之前都先运行一个 .bat 脚本,这样每次 cmd 运行前,doskey 都已经被设置,就等于变相设置了一个永久有效的 alias。
- 回到我们刚刚创建的另一个 doskey.bat 文件,在里面输入以下内容:这样,我们就为
@echo off
doskey admin=schtasks /run /tn "cmd-admin" $*schtasks /run /tn "cmd-admin"
创建了一个叫admin
的别名。 - 打开注册表编辑器(命令
regedit.exe
),上方地址栏直接定位到HKEY_CURRENT_USER\Software\Microsoft\Command Processor
(如果这个之不存在就创建一个;定位到Software/Microsoft
目录,在Microsoft
上点击右键 -New
-Key
- 输入Command Processor
),右侧空白处右键,选择 New - String Value(字符串),创建一个名为AutoRun
的字符串;然后双击字符串,在值的内容输入doskey.bat
的绝对路径,例如我的D:/bats/doskey.bat
,然后保存退出。 - 尝试打开 cmd / Windows Terminal 里的 cmd,输入 admin,就可以即时弹出带有管理员权限的相应窗口,无需繁复操作。
效果如下:
此外,你也可以设置一些另外的有意思的 doskey,也是放在刚刚设置的 doskey.bat 里一并运行;例如我的:doskey hosts=code c:\windows\system32\drivers\etc\hosts $*
doskey clear=cls $*
doskey u=ubuntu $*