hualy 发表于 2024-6-8 11:39

【批处理】添加右键再添加右键

本帖最后由 hualy 于 2024-6-8 11:48 编辑

基础
1. 注册表的结构
Windows注册表由多个层次结构的键(Key)和值(Value)组成。
主要的顶层键(也叫根键)包括:
•      HKEY_CLASSES_ROOT(HKCR):存储文件类型和文件扩展名关联。
•      HKEY_CURRENT_USER(HKCU):存储当前用户的配置。
•      HKEY_LOCAL_MACHINE(HKLM):存储所有用户和系统级别的配置。
•      HKEY_USERS(HKU):存储所有用户的配置。
•      HKEY_CURRENT_CONFIG(HKCC):存储当前硬件配置文件信息。


2. 键(Keys)和子键(Subkeys)
每个键类似于文件系统中的文件夹,可以包含子键。子键可以嵌套多层,形成一个树状结构。


3. 值(Values)
每个键可以包含一个或多个值,每个值有一个名称和数据类型。
常见的数据类型包括:
•      REG_SZ:字符串值
•      REG_DWORD:32位数字值
•      REG_QWORD:64位数字值
•      REG_BINARY:二进制数据
•      REG_MULTI_SZ:多字符串值
•      REG_EXPAND_SZ:可扩展的字符串值(包含环境变量)


4. 注册表编辑器
Windows提供了一个图形界面工具“注册表编辑器”(Regedit),用于查看和编辑注册表。你可以通过以下方式打开注册表编辑器:
1.      按下 Win + R 打开运行对话框。
2.      输入 regedit 并按下 Enter 键。


5. 常见操作
•      查看键和值:在注册表编辑器中浏览树状结构,展开键查看子键和值。
•      创建键和值:右键点击任意键,选择“新建”来创建新的键或值。
•      修改值:双击某个值,编辑其数据内容。
•      删除键和值:右键点击需要删除的键或值,选择“删除”。


6.右键菜单位置
情形注册表位置
右键空白区域桌面空白区域HKEY_CLASSES_ROOT\DesktopBackground\Shell
一般空白区域管理员HKEY_CLASSES_ROOT\Directory\Background\shell
普通用户HKEY_CURRENT_USER\Software\Classes\directory\Background\shell
右键文件夹管理员HKEY_CLASSES_ROOT\Directory\shell
普通用户HKEY_CLASSES_ROOT\Directorylshell
右键文件管理员HKEY_CLASSES_ROOT\*\shell
普通用户HKEY_CURRENT_USER\Software\Classes\*\shell

参考:
win10 给右键文件、文件夹、桌面菜单添加程序(项)
使用注册表编辑win10鼠标右键菜单,详细解释(右键文件夹、文件以及右键空白区域下三种情况)


相关文件内容
add_context_menu.bat
@echo off
:: 关闭命令回显
echo Checking if "Add to Context Menu" option exists...

:: 检查是否存在右键菜单项
REG QUERY "HKCU\Software\Classes\*\shell\AddToContextMenu" >nul 2>&1
if %errorlevel%==0 (
    echo "Add to Context Menu" option already exists.
) else (
    echo Adding "Add to Context Menu" option...

    :: 添加右键菜单项
    REG ADD "HKCU\Software\Classes\*\shell\AddToContextMenu" /ve /d "Add to Context Menu" /f
    REG ADD "HKCU\Software\Classes\*\shell\AddToContextMenu\command" /ve /d "\"%~dp0handle_add_to_context_menu.bat\" \"%%1\"" /f

    echo "Add to Context Menu" option added successfully.
)

pause



handle_add_to_context_menu.bat
@echo off
:: 关闭命令回显
if "%1"=="" (
      echo No file specified.
      pause
      exit /b
)

:: 获取传递的文件路径
set "filePath=%1"
:: 获取文件名(不含路径)
set "fileName=%~nx1"
:: 获取文件的目录路径
set "fileDir=%~dp1"

:: 输出将要添加到注册表的信息
echo Adding file information to the registry: %filePath%

:: 添加文件路径到注册表
REG ADD "HKCR\*\shell\%fileName%" /ve /d "%fileName%" /f
REG ADD "HKCR\*\shell\%fileName%" /v "icon" /t REG_SZ /d"%filePath%" /f
REG ADD "HKCR\*\shell\%fileName%\command" /ve /d"\"%filePath%\" \"%%1\"" /f

echo File information added successfully
:: 输出提示信息,告知用户文件信息已成功添加到注册表
pause

用法
放在同一文件夹


1、成功运行add_context_menu.bat
双击add_context_menu.bat

运行成功后,右键任意文件会出现zadd contextmenu选项:


2、添加自己需要的常用.exe
如下步骤:

弹出以下情况为添加成功:

此时右键文件会出现自己添加的.exe文件:python.exe


3、尝试能否正常使用
使用我之前写的python签到脚本来试验一波





签到成功,说明所添加的python.exe能够正常使用

扩展
如果想在其他地方右键添加,如文件夹、空白区域、桌面的右键添加,只要把handle_add_to_context_menu.bat用编辑器打开,选中HKCR\*\shell然后Ctrl + H,再将替换的内容设置为下表的位置,然后点击全部替换即可
情形注册表位置
右键空白区域桌面空白区域HKEY_CLASSES_ROOT\DesktopBackground\Shell
一般空白区域管理员HKEY_CLASSES_ROOT\Directory\Background\shell
普通用户HKEY_CURRENT_USER\Software\Classes\directory\Background\shell
右键文件夹管理员HKEY_CLASSES_ROOT\Directory\shell
普通用户HKEY_CLASSES_ROOT\Directorylshell
右键文件管理员HKEY_CLASSES_ROOT\*\shell
普通用户HKEY_CURRENT_USER\Software\Classes\*\shell




土豪通道:
密码:52pojie

magiclyan 发表于 2024-6-9 17:04

春天的萌动 发表于 2024-6-8 18:07
写的非常详细。有心了。有没有什么办法能强制删除AMD显卡的桌面右键菜单亚。设置过后,开机重启又出现了。

找到对应的路径将相关项改名并且取消权限,嫌麻烦的也可以使用诸如:EasyMenu、ContextMenuManager、甚至是HiBitUninstaller等进行相关注册表项的删除

另外告诉你个曲线的方法,可以在同级键值中加入
“Extended”这个空键值;这是告诉系统只有当我按下SHIFT键时才显示该快捷菜单否则一律隐藏

ZhjhJZ 发表于 2024-6-8 11:48

学习了,受教{:1_893:}

rhci 发表于 2024-6-8 11:50

学习了,已记录,下次需要时,就可以用了。

BonnieRan 发表于 2024-6-8 11:55

强啊~ 这样电脑上的绿色版软件也可以添加到右键了

我是一个外星人 发表于 2024-6-8 12:12

这个好 用得到

hangjiasoft 发表于 2024-6-8 12:15

感谢分享,学习了

long88888888 发表于 2024-6-8 12:28

已使用,添加不成功,为什么BAT提示已存在一个问题

hualy 发表于 2024-6-8 12:33

long88888888 发表于 2024-6-8 12:28
已使用,添加不成功,为什么BAT提示已存在一个问题

你可以看一下注册表的位置,是不是已经存在了,如果不行,可以删除再添加一下

cxqdly 发表于 2024-6-8 12:55

能否反过来搞一个查询exe文件已经创建的右键注册表位置,方便删除多余的右键菜单

hualy 发表于 2024-6-8 12:57

cxqdly 发表于 2024-6-8 12:55
能否反过来搞一个查询exe文件已经创建的右键注册表位置,方便删除多余的右键菜单

其实直接在注册表那就可以删的,明白他们在哪个位置就行了
页: [1] 2 3 4 5
查看完整版本: 【批处理】添加右键再添加右键