+
23
-

回答

好的,在 Windows 10 中通过修改注册表,可以非常方便地为文件或文件夹的右键菜单添加自定义项,并让它执行一个 Python 脚本来弹出一个窗体。

这是一个非常实用的功能,比如你可以做一个 "查看文件元数据"、"用我的程序处理这个文件夹" 等工具。

重要警告: 操作将涉及修改 Windows 注册表。修改注册表有风险,错误的操作可能导致系统不稳定或无法启动。在操作前,强烈建议您备份注册表。

下面我将分三步来详细讲解如何实现:

编写 Python 脚本 (弹出窗体)

修改注册表 (添加右键菜单项)

测试和移除

第 1 步:编写 Python 脚本 (show_info.py)

首先,我们需要一个 Python 脚本,它能接收一个文件或文件夹路径作为参数,然后在一个图形界面(窗体)中显示这个路径。我们将使用 Python 内置的 tkinter 库,因为它无需安装,非常方便。

创建一个名为 show_info.py 的文件,内容如下:

import tkinter as tk
from tkinter import messagebox
import sys

def show_popup_window(path):
    """
    创建一个简单的 Tkinter 窗口来显示接收到的路径。
    """
    # 创建主窗口
    root = tk.Tk()
    root.title("自定义右键菜单")

    # 获取屏幕宽度和高度
    screen_width = root.winfo_screenwidth()
    screen_height = root.winfo_screenheight()

    # 设置窗口大小和位置
    window_width = 500
    window_height = 200
    x_coordinate = int((screen_width / 2) - (window_width / 2))
    y_coordinate = int((screen_height / 2) - (window_height / 2))
    root.geometry(f"{window_width}x{window_height}+{x_coordinate}+{y_coordinate}")

    # 创建一个标签来显示信息
    label_text = f"你右键点击了:\n\n{path}"
    label = tk.Label(root, text=label_text, padx=20, pady=20, font=("Microsoft YaHei", 12))
    label.pack(expand=True)

    # 创建一个关闭按钮
    close_button = tk.Button(root, text="关闭", command=root.destroy, width=10)
    close_button.pack(pady=10)

    # 运行主循环
    root.mainloop()


if __name__ == "__main__":
    # Windows 右键菜单会把点击的文件/文件夹路径作为第一个参数传递进来
    # sys.argv[0] 是脚本自己的名字
    # sys.argv[1] 是第一个参数,也就是我们需要的路径
    if len(sys.argv) > 1:
        file_path = sys.argv[1]
        show_popup_window(file_path)
    else:
        # 如果直接运行脚本,没有参数,则显示提示信息
        show_popup_window("没有文件或文件夹路径被传递!")

把这个 show_info.py 文件保存在一个你不会轻易移动或删除的位置,例如 D:\MyPythonScripts\show_info.py。

第 2 步:修改注册表

这是最关键的一步。我们将通过创建一个 .reg 文件来自动修改注册表,这比手动修改更安全、更方便。

2.1 找到你的 python.exe 路径

首先,你必须知道你的 Python 解释器 python.exe 的完整路径。打开命令提示符(CMD)并输入:

where python

它会显示一个或多个路径。选择你常用的那个,例如 C:\Users\YourUser\AppData\Local\Programs\Python\Python39\python.exe。

2.2 创建 .reg 注册表脚本

打开记事本。

将下面的代码复制到记事本中。

仔细修改代码中的路径为你自己的真实路径! 注意 \ 需要写成 \\(双反斜杠)。

Windows Registry Editor Version 5.00

; 为所有文件添加右键菜单
[HKEY_CLASSES_ROOT\*\shell\ShowMyInfoWindow]
@="用 Python 显示信息"
"Icon"="imageres.dll,78"

[HKEY_CLASSES_ROOT\*\shell\ShowMyInfoWindow\command]
@="\"C:\\Users\\YourUser\\AppData\\Local\\Programs\\Python\\Python39\\python.exe\" \"D:\\MyPythonScripts\\show_info.py\" \"%1\""


; 为所有文件夹添加右键菜单
[HKEY_CLASSES_ROOT\Directory\shell\ShowMyInfoWindow]
@="用 Python 显示信息"
"Icon"="imageres.dll,78"

[HKEY_CLASSES_ROOT\Directory\shell\ShowMyInfoWindow\command]
@="\"C:\\Users\\YourUser\\AppData\\Local\\Programs\\Python\\Python39\\python.exe\" \"D:\\MyPythonScripts\\show_info.py\" \"%1\""

代码解释:

Windows Registry Editor Version 5.00: .reg 文件的标准开头。

[HKEY_CLASSES_ROOT\*\shell\ShowMyInfoWindow]:

HKEY_CLASSES_ROOT\* 表示应用到所有类型的文件

shell 是存放右键菜单项的地方。

ShowMyInfoWindow 是我们自定义项的内部名称,可以随便取。

@="用 Python 显示信息": @ 表示默认值,这里设置的是菜单上显示的文本

"Icon"="imageres.dll,78": (可选) 为菜单项设置一个图标。imageres.dll是系统图标库,78 是其中一个图标的索引。

[... \command]: 这个键存放点击菜单后要执行的命令。

@="\"C:\\...\\python.exe\" \"D:\\...\\show_info.py\" \"%1\"": 这是核心命令。

路径中的 \ 必须转义为 \\

第一个路径是你的 python.exe 路径。

第二个路径是你的 .py 脚本路径。

"%1" 是一个占位符,Windows 会自动用你右键点击的文件或文件夹的完整路径替换它。

所有路径都用引号括起来,以防路径中包含空格。

[HKEY_CLASSES_ROOT\Directory\shell\...]: 这部分和上面类似,但 Directory 表示应用到所有文件夹

2.3 导入注册表

将修改好的记事本文件保存,文件名可以叫 add_menu.reg (后缀名必须是 .reg)。

双击你保存的 add_menu.reg 文件。

系统会弹出用户账户控制(UAC)和注册表编辑器的警告,依次点击 "是" 和 "确定"。

恭喜! 现在你的右键菜单已经添加成功了。

第 3 步:测试和移除

测试

现在,随便找一个文件或文件夹,右键点击它,你应该能看到一个名为 "用 Python 显示信息" 的新选项。

点击它,稍等片刻,就会弹出我们用 Python 编写的窗体,并显示你所点击的文件/文件夹的路径。

如何移除

如果你想移除这个右键菜单项,也非常简单。

新建一个记事本文件。

复制下面的代码进去:

Windows Registry Editor Version 5.00

; 移除文件的右键菜单
[-HKEY_CLASSES_ROOT\*\shell\ShowMyInfoWindow]

; 移除文件夹的右键菜单
[-HKEY_CLASSES_ROOT\Directory\shell\ShowMyInfoWindow]

注意,在要删除的键路径前面加上一个减号 -,就表示删除这个键及其所有子项。

将文件保存为 remove_menu.reg。

双击运行它,确认导入即可。右键菜单项就会被干净地移除。

网友回复

我知道答案,我要回答