Windows右键菜单的管理是用的注册表。
选中文件后的右键菜单的管理路径在HKEY_CLASSES_ROOT\Directory\shell
,在文件夹中空白处右键菜单在HKEY_CLASSES_ROOT\Directory\Background\shell
。
例子
以创建“在当前目录打开Ubuntu子系统”为例
-
使用
Win
+R
运行regedit
,打开路径HKEY_CLASSES_ROOT\Directory\Background\shell
。 -
新建
项
,命名为Ubuntu
,修改其中的默认
的值为在此打开Ubuntu
。这个内容将会显示在右键菜单上。 -
在
Ubuntu
上新建项
,命名为command
,修改其中的默认
的值为ubuntu1804.exe run
,这将是当你单击右键菜单中对应选项时执行的命令。 -
在
Ubuntu
上新建可扩充字符串值
,命名为Icon
,值为图标文件的路径。路径如果是一个自带图标的exe文件也可以。
Python代码
将以上过程封装起来,即可获得以下代码。
import winreg
FILE_PATH = r"Directory\shell\\"
BACKGROUND_PATH = r"Directory\Background\shell\\"
def create(key, title, command, icon=None, BASE_PATH=BACKGROUND_PATH):
"""
key:注册表中的键值
title:显示在菜单里的内容
command:具体执行的命令
icon:图标的路径,可以不给出值
"""
path = winreg.CreateKey(winreg.HKEY_CLASSES_ROOT, BACKGROUND_PATH + key)
winreg.SetValueEx(path, "", 0, winreg.REG_EXPAND_SZ, title)
if icon is not None:
winreg.SetValueEx(path, "Icon", 0, winreg.REG_EXPAND_SZ, icon)
command_path = winreg.CreateKey(path, "command")
winreg.SetValue(command_path, "", winreg.REG_SZ, command)
if __name__ == "__main__":
WINDOWS_APP = r"C:\Program Files\WindowsApps"
ubuntu = WINDOWS_APP + r"\CanonicalGroupLimited.Ubuntu18.04on" \
r"Windows_1804.2018.817.0_x64__79rhkp1fndgsc\ubuntu1804.exe"
create("Ubuntu", "在此打开Ubuntu", ubuntu+' run', ubuntu)
在最近的Windows10 教育版更新中,已经自带了在此打开Linux Shell的功能,按住Shift右击鼠标即可。