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 中 character set 与 collation 的理解
character set 和 collation 的是什么? character set, 即字符集. 我们常看到的 utf-8, GB2312, GB18030 都是相互独立的 character ...
- div布局之面向对象
栗子之导航条(navbar) http://www.runoob.com/try/try2.php?filename=bootstrap-using-glyphicons-navbar <!DO ...
- android与js的交互之jsbridge使用
众所周知,app的一些功能可能会使用到H5开发,这就难免会遇到java与js 的相互调用,android 利用WebViewJavascriptBridge 实现js和java的交互,这里介绍下JsB ...
- Get Docker CE for CentOS
To get started with Docker CE on CentOS, make sure you meet the prerequisites, then install Docker. ...
- WebSocket和Socket
WebSocket和Socket tags:WebSocket和Socket 引言:好多朋友想知道WebSocket和Socket的联系和区别,下面应该就是你们想要的 先来一张之前收集的图,我看到这张 ...
- LeetCode Javascript实现 344. Reverse String 292. Nim Game 371. Sum of Two Integers
344. Reverse String /** * @param {string} s * @return {string} */ var reverseString = function(s) { ...
- 「JavaScript」JS四种跨域方式详解
原文地址https://segmentfault.com/a/1190000003642057 超详细并且带 Demo 的 JavaScript 跨域指南来了! 本文基于你了解 JavaScript ...
- 玩转web之ligerui(二)---前缀编码生成树(分级码)实现树型表格
请珍惜小编劳动成果,该文章为小编原创,转载请注明出处. 背景: 在ligerui中(其他uI可能也大同小异),实现树形表格可以通过父子节点,也可以通过前缀编码生成树去实现,而使 ...
- 7. 整合shiro,搭建粗粒度权限管理
shiro是一个易用的权限管理框架,只需提供一个Realm即可在项目中使用,本文就将结合上一篇中搭建的权限模块.角色模块和用户模块来搭建一个粗粒度的权限管理系统,具体如下:1. 添加shiro依赖和与 ...
- java中读取配置文件ResourceBundle和Properties两种方式比较
今天在开发的时候,需要把一些信息放到配置文件中,方便后续的修改,注意到用的是ResourceBundle读取配置文件的方式,记得之前也见过使用Properties的方式,就比较好奇这两种方式的区别,网 ...