是的,我已经懒到鼠标都不想(大幅度地)移动了,该怎么办呢?

写在前面

很多时候在使用命令提示符 cmd.exe 的时候,一些操作只能在管理员模式下进行,例如使用 Chocolatey 包管理器安装 Pythonchoco install python - 这个时候,“打开 Windows 开始菜单 - 输入 cmd - 右键 - 以管理员命令运行” 这一系列的操作就变得有些烦人。是的,我已经懒到鼠标都不想(大幅度地)移动了,该怎么办呢?

和某位群友交流过后,得知与他不同,由于我在 Windows 上并非使用 Administrator 账号直接登录,而是使用个人有管理员权限的账号,因此打开 cmd 就不能做到直接是管理员。我转战 Google,在一篇文章里了解到,要想做到无 UAC 弹出的 cmd 开启,无论如何需要使用快捷方式(shortcut)。然而作为一个默认隐藏桌面图标,桌面啥都没有的人来说,shortcut 也不适合我。在上述文章的末部,方法五,我发现可以做到通过 Windows 的 Task Scheduler 做到通过一行命令直接用管理员权限开启某一个程序。看到这里我大概就有思路了:先按照这个方法让命令提示符能被一条命令开启,然后创建一个别名,用一个简单的词汇代替复杂的命令,这样以后在 cmd 里如果想升级到管理员权限,直接输入那个简单的词汇,回车即可。

由于我的系统语言是英文,下述内容会直接引用系统显示的相关英文词汇

创建任务

  1. 首先打开 Windows 菜单,输入 Task Scheduler,左侧侧边栏选择 Task Scheduler (Local) - Task Scheduler Library
  2. 右侧侧边栏选择 Create Task,在弹出窗口里输入 Task(任务)的名称(例如 cmd-admin),下方 Configure for 下拉菜单选择你的系统(Windows 10)
  3. 建议在系统的非 C 盘进行这个操作:创建一个文件夹,名称随意(例如 bats),文件夹里面创建两个文本文档,分别重命名为 cmd.batdoskey.bat(可自行改动,记得就好)
  4. 在 cmd.bat 内输入如下内容:
    @echo off
    start cmd.exe
    EXIT 0
    由于我习惯使用 Windows Terminal,故此在这一步我用 start wt.exe 代替了 start cmd.exe;(在这种情况下,有可能需要手动为 wt.exe 单独设置 default profile,确保打开的是 cmd)。
  5. 保存;返回 Task Scheduler,在 Actions 一栏的下方点击 New,在弹出窗口里点击 Program/script 旁边的 Browse,选择刚刚创建的 cmd.bat
  6. 切换到 Conditions 标签,反选 Power 下的 Start the task only if the computer is on AC power
  7. 回到 General 标签,Security Options 下选中 Run with highest privileges
  8. 这个时候,我们就已经可以通过 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。

  1. 回到我们刚刚创建的另一个 doskey.bat 文件,在里面输入以下内容:
    @echo off
    doskey admin=schtasks /run /tn "cmd-admin" $*
    这样,我们就为 schtasks /run /tn "cmd-admin" 创建了一个叫 admin 的别名。
  2. 打开注册表编辑器(命令 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,然后保存退出。
  3. 尝试打开 cmd / Windows Terminal 里的 cmd,输入 admin,就可以即时弹出带有管理员权限的相应窗口,无需繁复操作。
    效果如下:

此外,你也可以设置一些另外的有意思的 doskey,也是放在刚刚设置的 doskey.bat 里一并运行;例如我的:

doskey hosts=code c:\windows\system32\drivers\etc\hosts $*
doskey clear=cls $*
doskey u=ubuntu $*

参考