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 窗口,并定位到当前路径

参考资料
Win10添加右键打开cmd和Powershell窗口(管理员/非管理员)
Microsoft.PowerShell.Management.Start-Process
Windows10文件目录下添加 Shift+右键打开管理员Powershell窗口的更多相关文章
- Windows 桌面和文件夹的右键->打开命令行窗口
Windows 桌面和文件夹的右键->打开命令行窗口 1.先按下shift,再点鼠标右键运行CMD,(不是管理员权限) 上图是我已经加了右键的,并且 系统设置了 ps代替cmd,所以是“在此处 ...
- UE添加鼠标右键打开
重装了下系统,有一些工具,不用重新安装还是能用的,比如UE.pl/sql,就当是绿色软件了.但是有些在鼠标右键里的功能没有了 ,比如UE的右键打开. 可以这样修改:打开UltraEdit->高级 ...
- 将Editplus添加到右键打开菜单
因为自己一直用Editplus作为文本打开工具,新的电脑将压缩文件复制了过来,但是没有右键打开了. 第一打开注册表 在命令框中输入regedit 第二在注册表中输入选项 如下图所示在下拉菜单中新建Ed ...
- Windows10下设置Shift+右键增加cmd
https://blog.csdn.net/wyx0712/article/details/82120806
- 执行程序(例如UltraEdit)在WIN7下添加到右键菜单
把下面提供的代码复制到记事本,保存为注册表文件(*.reg),右键合并即可.注意把最后一行换成你自己的路径. Windows Registry Editor Version 5.00 [HKEY_CL ...
- Windows 10恢复Shift+右键打开命令提示符窗口
导入以下注册表即可. Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\Directory\Background\shell\cmd1] ...
- 【Windows】+ windows下在某一文件夹下按“shift+鼠标右键”打开CMD窗口
前言:没更改之前是打开的powershell窗口,超不习惯 新建一个txt文件,然后复制以下代码,然后保存为OpenCmdHere.reg 格式,然后双击即可 Windows Registry Edi ...
- Win10.Shift+鼠标右键_CMD(管理员)
1.资料: 1.1.Windows10下设置Shift+右键增加cmd - wyx0712的博客 - CSDN博客.html(https://blog.csdn.net/wyx0712/article ...
- Windows10右键添加“在此处打开命令窗口"
今天跑代码时用到了Powershell,有一个环境变量死活都找不到,无奈只好重新回到cmd命令行测试,结果立马就跑通了.-_-|| 由于现在Win10默认右键只有Powershell,所以为了以后方 ...
随机推荐
- mysql explain rows理解
在MySQL性能调试中,常常使用EXPLAIN解释MySQL执行计划,从而用来估算性能耗时.其中,rows用来表示在SQL执行过程中会被扫描的行数,该数值越大,意味着需要扫描的行数,相应的耗时更长.但 ...
- Spring Boot Favicon配置
http://blog.csdn.net/xiaolyuh123/article/details/72403226
- c++右值引用以及使用
前几天看了一篇文章<4行代码看看右值引用> 觉得写得不错,但是觉得右值引用的内容还有很多可以去挖掘学习,所以总结了一下,希望能对右值引用有一个更加深层次的认识 一.几个基本概念 1.1左值 ...
- Linux时间子系统之二:表示时间的单位和结构
人们习惯用于表示时间的方法是:年.月.日.时.分.秒.毫秒.星期等等,但是在内核中,为了软件逻辑和代码的方便性,它使用了一些不同的时间表示方法,并为这些表示方法定义了相应的变量和数据结构,本节的内容就 ...
- 【数据结构】B-Tree, B+Tree, B*树介绍
[摘要] 最近在看Mysql的存储引擎中索引的优化,神马是索引,支持啥索引.全是浮云,目前Mysql的MyISAM和InnoDB都支持B-Tree索引,InnoDB还支持B+Tree索引,Memory ...
- width和max-width的用处
width默认是auto啊,你设置max-width相当于没设置width,它按默认值auto自然就是图片宽度咯.max-width很多的场景都是和width配合用的:比如设置一个标签,width是( ...
- centos7 更新Firefox版本
1.用你本地的旧版 firefox,访问http://www.firefox.com.cn,下载Linux版本的Firefox,因为我的是64位故选择的安装包是:"Firefox-lates ...
- java Socket多线程聊天程序
参考JAVA 通过 Socket 实现 TCP 编程 参考java Socket多线程聊天程序(适合初学者) 以J2SDK-1.3为例,Socket和ServerSocket类库位于java.net包 ...
- JAXBContextAPI详解
javax.xml.bind类 JAXBContext java.lang.Object javax.xml.bind.JAXBContext public abstract class JAXBCo ...
- MDK5使用Jlink下载显示 no cortex m sw divice 解决办法
问题: (1)下面界面中找不到设备 (2)下载程序的时候提示" no cortex m sw divice " 然后是"target dll has been cance ...