我记得正常安装后是会自动添加到右键菜单的,但是因为之前重装过电脑,导致之前的一些配置失效了,右键菜单也丢失了,这里重新设置一下。
步骤
打开软件WinMerge,右边工具(或者是上面栏的编辑–选项),外壳集成,注册shell扩展,然后勾选上面的添加到上下文菜单和启用高级菜单。
效果
选中一个文件,查看效果:多了两个选项:和另一个对比、对比。
选中二或三个文件,查看效果:多了一个选项:对比。
(单次中,WinMerge不支持3个文件以上进行对比!)
扩展内容:修改了哪些文件?
其实按照Windows的逻辑,一般就是写注册表或者配置文件。
底层分析
WinMerge源码:https://github.com/WinMerge/winmerge
参考这篇文章:https://jpliu.github.io/winmergeportable.html
最近发现 WinMerge 的 GitHub Releases 上更新了 2.16.13 Beta 的版本,里面提到的其中一个功能点是
Possibility to store settings in INI file
,大致意思是支持将 WinMerge 的配置保存至 ini 文件中。
- 2.16.13 Beta 之前的 WinMerge 设置是保存在注册表中的,但是可以在程序设置中对设置的 reg 进行导出,更换设备之后需要重新导入 reg 文件之后才能正常显示功能。
- 2.16.13 Beta 之后的版本只要在 WinMergeU.exe 的文件夹中新建一个名为
WinMerge.ini
的文件,WinMerge 就会自动将设置保存至该文件中,但是需要注意,新建文件后,之前的设置需要重新设置,因为读取到 WinMerge.ini的文件之后程序就不去读注册表了。
我去看了下这个版本的发版说明:https://github.com/WinMerge/winmerge/releases/tag/v2.16.13,确实是这么回事,这个版本之前是写注册表,后面是写配置文件。
(看了下我的版本是2.16.12,也就是写注册表)
查看文件修改:https://github.com/WinMerge/winmerge/compare/master...grzesie:winmerge:grzesie-SettingsIniFile
Src/Merge.cpp 把写注册表的操作替换了。
Src/Common/RegOptionsMgr.cpp:https://github.com/WinMerge/winmerge/blob/46546b0aceb516696662be481218c207e0725527/Src/Common/RegOptionsMgr.cpp
注册表分析
(看了下我的版本是2.16.12,也就是写注册表)
找了下,大概应该是有这些注册表:
# 这个是配置项
计算机\HKEY_CURRENT_USER\SOFTWARE\Thingamahoochie\WinMerge
# 下面几个好像都是邮件相关的
计算机\HKEY_CLASSES_ROOT\*\shellex\ContextMenuHandlers\WinMerge
计算机\HKEY_CLASSES_ROOT\Directory\shellex\ContextMenuHandlers\WinMerge
计算机\HKEY_CLASSES_ROOT\Directory\shellex\DragDropHandlers\WinMerge
计算机\HKEY_CLASSES_ROOT\Directory\Background\shellex\DragDropHandlers\WinMerge
然后我尝试开关这两个按钮(添加到上下文菜单和启用高级菜单),发现主要是配置项(计算机\HKEY_CURRENT_USER\SOFTWARE\Thingamahoochie\WinMerge)改了两个东西:
(左边关闭,右边开启)
计算机\HKEY_CURRENT_USER\SOFTWARE\Thingamahoochie\WinMerge
ContextMenuEnabled从0变成3
计算机\HKEY_CURRENT_USER\SOFTWARE\Thingamahoochie\WinMerge\ResizeableDialogs
OptionsDlg 从693,288,1383,894,变成490,268,1180,874。
关键是ContextMenuEnabled,如果这两个按钮(添加到上下文菜单和启用高级菜单)都不勾选是0,勾选添加到上下文菜单是1,都勾选是3。
(其实有点没懂的是:为啥通过这个配置项就能控制右键菜单,因为一般右键菜单都是要那几个shell下面相关的注册表才能控制的,但是都比了那几个注册表,没有发现变化,存疑!!!后面有空深入研究一下,先到这里。)