当前位置: 首页 > news >正文

Python winreg将cmd/PowerShell(管理员)添加到右键菜单

效果

在这里插入图片描述
在这里插入图片描述

1. 脚本

用管理员权限运行,重复执行会起到覆盖效果(根据sub_key)。

  • icon自己设置。
  • text可以自定义。
  • sub_key可以改但不推荐(避免改成和系统已有项冲突的)。
  • command不要改。
from winreg import *registry = r"Directory\Background\Shell"# Warning: 不要将sub_key改为cmd或PowerShell,否则可能会与系统已有项冲突。
config = [{"sub_key": "mouse_cmd","text": "Windows Command","icon": r"C:\Users\CF\Desktop\icon\cmd.ico","command": "cmd",},{"sub_key": "mouse_cmd_admin","text": "Windows Command (管理员)","icon": r"C:\Users\CF\Desktop\icon\cmd.ico","command": "PowerShell -windowstyle Hidden -Command \"Start-Process cmd.exe -ArgumentList '/s,/k, pushd,%V' -Verb RunAs\"",},{"sub_key": "mouse_PowerShell","text": "Windows PowerShell","icon": r"C:\Users\CF\Desktop\icon\powershell.ico","command": "PowerShell",},{"sub_key": "mouse_PowerShell_admin","text": "Windows PowerShell (管理员)","icon": r"C:\Users\CF\Desktop\icon\powershell.ico","command": 'powershell -WindowStyle Hidden -NoProfile -Command "Start-Process -Verb RunAs powershell.exe -ArgumentList \\"-NoExit -Command Push-Location \\\\\\"\\"%V/\\\\\\"\\"\\"',},
]for item in config:key = OpenKey(HKEY_CLASSES_ROOT, registry)SetValue(key, item["sub_key"], REG_SZ, item["text"])  # 创建子键,并设置其默认项的值(提示文字)key = OpenKey(HKEY_CLASSES_ROOT, registry + "\\" + item["sub_key"], access=KEY_WRITE)  # 打开子键SetValueEx(key, "icon", None, REG_SZ, item["icon"])  # 在子键中设置Icon项的值SetValue(key, "command", REG_SZ, item["command"])  # 在子键中创健子键command,设置其默认项的值(command)print("successfully")

2. 一次设置的过程

想了解过程的可以看下下面的。

# function: add cmd.exe to right-click context menug_text = "命令提示符"  # 显示文字
g_icon = r"C:\Users\CF\Pictures\Saved Pictures\cmd.ico"  # 图标路径
g_exe = r"C:\Windows\system32\cmd.exe"  # 可执行文件路径
g_key = r"right-click_cmd"  # 自定义,注册表字段名,不要和已有的冲突import winregkey = winreg.OpenKey(winreg.HKEY_CLASSES_ROOT, r"Directory\Background\Shell")winreg.SetValue(key, g_key, winreg.REG_SZ, g_text)key = winreg.OpenKeyEx(winreg.HKEY_CLASSES_ROOT,r"Directory\Background\Shell\\" + g_key,access=winreg.KEY_WRITE,
)
winreg.SetValueEx(key, "Icon", None, winreg.REG_SZ, g_icon)
winreg.SetValue(key, "command", winreg.REG_SZ, g_exe)# 在用管理员权限时,方法是唤起一个PowerShell,然后Start-Process来发起一个管理员权限的进程;
#   -verb Runas意思是管理员
#   /s /k pushd %V大概是传递给cmd路径参数# 示例:
# PowerShell -windowstyle hidden -Command "Start-Process cmd.exe -ArgumentList '/s,/k, pushd,%V' -Verb RunAs"
http://www.lryc.cn/news/233385.html

相关文章:

  • redis运维(九)字符串(二)字符串过期时间
  • 【C++】多线程的学习笔记(3)——白话文版(bushi
  • kotlin--3.集合操作
  • 自动驾驶-BEV感知综述
  • 面试题-3
  • C++ Core Guidelines 中文版 GSL
  • 同时显示上下两层凸包特征的可视化程序
  • Django框架之模型层(二)
  • C++之list
  • C语言日记——调试篇
  • 【python】Django——templates模板、静态文件、django模板语法、请求和响应
  • Android设计模式--观察者模式
  • 【Linux】Ubuntu16.04下安装python高版本--源码安装
  • 变长子网划分问题的二叉树解法
  • 编译安装redis及配置多实例
  • 网络(一)总纲
  • WPF中的App类介绍
  • .nc格式文件的显示及特殊裁剪方式
  • 为什么需要线程池?C++如何实现一个线程池?
  • 多视图聚类的论文阅读
  • shell脚本适用场景
  • Bash openldap同步AD组织数据
  • C#WPF文本转语音实例
  • 08-流媒体-RTMP拉流
  • 一键免费去除视频水印和字幕的AI工具
  • 实验六:Android的网络编程基础
  • 09-流媒体-FLV解复用
  • 信息的浏览
  • vue directive自定义指令实现弹窗可拖动
  • 07-流媒体-RTMP推流