资源管理器 右键菜单和文件关联 相关注册表操作

 1.右键菜单必须

*;Folder;Directory;Drive
[HKEY_CLASSES_ROOT\*\shellex\ContextMenuHandlers]
@="{FF770C85-53FE-4CCB-B5A9-D4B0511C6B4F}"

[HKEY_CLASSES_ROOT\CLSID\{FF770C85-53FE-4CCB-B5A9-D4B0511C6B4F}\InProcServer32]
@="F:\...\App.dll"
"ThreadingModel"="Apartment"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{FF770C85-53FE-4CCB-B5A9-D4B0511C6B4F}\InProcServer32] 同上

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Approved]
"{FF770C85-53FE-4CCB-B5A9-D4B0511C6B4F}"="app Shell comment"

WOW6432Node 32位
HKEY_LOCAL_MACHINE 可替换为 HKEY_CURRENT_USER

2.关联文件必备

 

[HKEY_CLASSES_ROOT\.ext]
@="RelevantKey"

[HKEY_CLASSES_ROOT\RelevantKey]

[HKEY_CLASSES_ROOT\RelevantKey\DefaultIcon]
@="D:\\..\\app.exe, 0"

[HKEY_CLASSES_ROOT\RelevantKey\shell\open\command ]
  ||\.\"app path" "%1"


[HKEY_CLASSES_ROOT\RelevantKey\shell]

[HKEY_CLASSES_ROOT\RelevantKey\shell\open]
[HKEY_CLASSES_ROOT\RelevantKey\shell\open\command]
@="\"D:\\...\\app.exe\" \"%1\""   双击打开关联文件

[HKEY_CLASSES_ROOT\RelevantKey\shellex]

[HKEY_CLASSES_ROOT\RelevantKey\shellex\ContextMenuHandlers]
[HKEY_CLASSES_ROOT\RelevantKey\shellex\ContextMenuHandlers\{FF770C85-53FE-4CCB-B5A9-D4B0511C6B4F}]    为单一文件类型添加右键菜单

[HKEY_CLASSES_ROOT\RelevantKey\shellex\DropHandler]
@="{FF770C85-53FE-4CCB-B5A9-D4B0511C6B4F}"    拖拽

[HKEY_CLASSES_ROOT\CLSID\{FF770C85-53FE-4CCB-B5A9-D4B0511C6B4F}\InProcServer32]
@="F:\...\App.dll"
"ThreadingModel"="Apartment"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{FF770C85-53FE-4CCB-B5A9-D4B0511C6B4F}\InProcServer32] 同上
不需要 Approved

WOW6432Node 32位
HKEY_LOCAL_MACHINE 可替换为 HKEY_CURRENT_USER
RelevantKey 为程序自定义

3.其他注册表路径

程序路径
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\AppName.exe]
@="D:\\Program Files\\AppDir\\AppName.exe"
"Path"="D:\\Program Files\\AppDir\\"

WOW6432Node 32位
HKEY_LOCAL_MACHINE 可替换为 HKEY_CURRENT_USER

 

4.注册表映射

HKEY_CURRENT_USER\Software\Classes\ --> HKEY_CLASSES_ROOT\  当前用户应用数据
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\ -->HKEY_CLASSES_ROOT\  所有用户共享数据

[HKEY_CLASSES_ROOT\]优先映射[HKEY_CURRENT_USER\Software\Classes\]
当[HKEY_CURRENT_USER\Software\Classes\]键值不存在时会映射[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\]的键值

当前用户程序需要保存的应用数据(设置信息)一般保存在 "HKEY_CURRENT_USER\Software\" 下面

5.QSettings 操作注册表

 

在64位系统 QSettings::Format属性

在32位程序
//NativeFormat == Registry32Format
HKEY_CLASSES_ROOT\WOW6432Node\CLSID\{FF770C85-53FE-4CCB-B5A9-D4B0511C6B4F}\InProcServer32
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Classes\CLSID\{FF770C85-53FE-4CCB-B5A9-D4B0511C6B4F}\InProcServer32
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Shell Extensions\Approved
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\App Paths\7zFM.exe

在64位 程序
//NativeFormat == Registry64Format 
HKEY_CLASSES_ROOT\CLSID\{FF770C85-53FE-4CCB-B5A9-D4B0511C6B4F}\InProcServer32
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{FF770C85-53FE-4CCB-B5A9-D4B0511C6B4F}\InProcServer32
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Approved
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\7ZipFM.exe\path

右键菜单的 *;Folder;Directory;Drive; 不区分32/64位程序

 

QSettings settingClass(QSettings::Registry64Format, QSettings::UserScope, "Classes","");
经过测试+看源码得到其等价于
QSettings settingClass0(QSettings::Registry64Format, QSettings::UserScope, "Classes","OrganizationDefaults");

6.

向 HKEY_LOCAL_MACHINE 下写入数据需要管理员权限

 

参考:

Windows注册表内容详解

Qt配置信息设置(QSettings在不同平台下的使用路径)

360压缩、WinRAR和7-Zip 注册表结构

Windows+Shell扩展编程完全指南

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值