Windows10文件目录下添加 Shift+右键打开管理员Powershell窗口
背景(可略过)
目前在调试 python 程序,遇到了一个问题:当程序中包含多线程时,使用 idle 运行是不会执行多线程的语句的,在网上一顿搜罗了解到这种情况可以换成在命令行下执行。好像用 pycharm 也可以,没有验证过。emmm,之前运行包含多线程的程序都是在 linux 环境下(树莓派 raspain、ubuntu16.04、ubuntu18.04)操作的,本身就是 dash 命令行。没想到 windows 下还有这种问题。
命令行就命令行吧,所以我选择 powershell。在我放程序的位置,直接 shift+鼠标右键,右键菜单里在此处打开 powershell 窗口(s),这样就省了再去各种 cd 了。ok,运行程序吧。然后,哼哼,要是能直接成功的话,这篇博客也就不会出现了。python 告诉我权限不够,那没办法,只好又打开管理员 powershell,然后,各种 cd,对于这种操作,我是拒绝的。所以开始想办法,在文件目录下(包括桌面)通过 shift+右键打开管理员 powershell。变成下图这种效果。
下面进入正题。
折腾向
这种方式比较折腾,适合喜欢捣鼓的同学,简单的方法可以直接往下看简单粗暴向
1 打开注册表编辑器
单击开始,输入 regedit ,进入注册表编辑器。如下图,我电脑系统是1809版本,所以又多出来了右边的框,可以右击注册表编辑器,固定到开始屏幕,方便下次使用。
2 进入编辑右键菜单的注册表分支
在路径下输入:hkey_classes_root\directory\background\shell
进入相应分支。
3 新建注册表项
3.1 创建菜单
(1)右击 shell 项,新建一个名为 powershelladmin 的项。
(2)在 powershelladmin 项内:
- 新建字符串值,命名为 extended,数值数据为空。
功能:使右键选项在平时不显示,在按下 shift时才会显示。 - 新建字符串值,命名为 muiverb,双击该项修改数值数据为:在此处打开管理员 powershell 窗口(a)
功能:ui 嘛,界面啊,所以它就是为了让菜单中显示的是“在此处打开管理员 powershell 窗口(a)”,不添加的话,右击是这个样子滴。
显示的就是 powershelladmin 项的名称。
ps:这里我本来是想在 (默认) 这个字符串值里直接 @shell32.dll 里面的字符串资源的,无奈没有找到相应的字符串(不一定没有哈),所以就用了这个方法。其实直接在 (默认) 里面写“在此处打开管理员 powershell 窗口(a)”,这样也是可以的,不过我更喜欢前者。 - 新建字符串值,命名为 noworkingdirectory,数值数据为空。
功能:emmm,我也不是很清楚,在网上查也查不到。“在此处打开 powershell 窗口(s)”这条命令相关的注册表项里面有这个,我也就加上了,估计是和这个项相关的命令在哪可以生效执行有关系。 - 新建 dword(32位值)(d),命名为 showbasedonvelocityid,数值数据为:基数十六进制(h)的 639bc8
ok,以上几部执行完毕后,右侧看起来应该是这个样子滴
3.2 为菜单创建操作命令
菜单界面是有了,但还没有与之匹配的命令,没有 command 命令的话,这个菜单只是一个空壳,点击它会提示没有找到可以执行的应用程序。就像下面这样。
接下来创建命令项。右击 powershelladmin 项,新建名为 command 的项。
在右侧 (默认) 字符串里填入如下命令:
powershell.exe -command start-process powershell -argumentlist \"-noexit\",\"set-location -literalpath '%v'\" -verb runas
命令释义:
powershell.exe -command start-process powershell
这部分是让普通的 powershell 再打开一个 powershell 进程。
-argumentlist \"-noexit\",\"set-location -literalpath '%v'\"
这部分是为新的 powershell 进程指定了参数,-noexit,不退出窗口,set-location -literalpath '%v',定位到当前位置。
-verb runas
使用“以管理员身份运行”选项启动新的 powershell 进程。
如此,就。。。大功告成!!!以上步骤都完成后,就可以实现在当前位置打开管理员 powershell 了。当然,不想折腾的话也可以使用下面这种方法。
简单粗暴向
这种方法比较简单粗暴,直接合并注册表就可以了。
新建一个文本文档,复制下面的代码,选择另存为,文件类型为所有文件,编码选择ansi,文件名为powershelladmin.reg(文件名可以随便起,但是后缀名需要是.reg,表明它的文件类型是注册表项),然后双击 powershelladmin.reg 合并注册表,提示如下内容:
点击是,然后提示“已成功添加到注册表中”,欧克,搞定!!!
windows registry editor version 5.00 [hkey_classes_root\directory\background\shell\powershelladmin] "extended"="" "noworkingdirectory"="" "showbasedonvelocityid"=dword:00639bc8 @="" "muiverb"="在此处打开管理员 powershell 窗口(a)" [hkey_classes_root\directory\background\shell\powershelladmin\command] @="powershell.exe -command start-process powershell -argumentlist \\\"-noexit\\\",\\\"set-location -literalpath '%v'\\\" -verb runas"
最终效果
shift+右击菜单
点击效果
首先会弹出来一个普通的 powershell 窗口来执行命令,这个窗口会自动退出
然后会弹出uac用户账户控制窗口,点击确定后,会弹出管理员模式的 powershell 窗口,并定位到当前路径
参考资料
上一篇: 新买的床头灯