• 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")
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49

    2. 一次设置的过程

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

    # function: add cmd.exe to right-click context menu
    
    g_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 winreg
    
    key = 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"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
  • 相关阅读:
    算法通关村第三关-白银挑战双指针思想
    命令执行漏洞(附例题)
    2022 年跨境电商要尝试的 25 个黑五营销技巧
    新闻软文稿件媒体发布怎么做?纯干货
    Gstreamer应用开发实战指南(五)
    Iphone自带的邮箱 每次发完邮件在已发送里会显示重复发送了两封
    工具清单 - IDE工具
    【云原生】kubernetes中pod(最小的资源管理组件)
    C++保姆级入门教程(10)—— 一维数组练习
    光伏无人机勘探技术应用分析
  • 原文地址:https://blog.csdn.net/qq_51470638/article/details/134435755