我们正在开发一个NSIS 安装程序,它可以编辑几种文件类型的注册表以更改它们的图标和运行它们的应用程序。
我们的工作流程在 Win7/32 位、WinXP/32 和 WinXP/64 上正常工作,但在 Win7/64 上无法正常工作。我们已经在多台 Win7/64 机器上测试过,问题在两个 Win7/64 实例上都是一致的。
另一个细节是它仅在覆盖现有关联时,因为创建一个新关联可以正常工作。
注册表编辑只需设置DefaultIcon
,shell/open/command
在注册表编辑完成后,我们使用SHChangeNotify
系统调用强制外壳使用新设置进行更新。
在 Win7/64 上,注册表中已有的文件类型不会更新为新值。
; Tell the shell to reset its icon cache
System::Call 'shell32.dll::SHChangeNotify(i, i, i, i) v \
(0x08000000, 0, 0, 0)'
非常感谢任何帮助,特别是不涉及系统重新启动或重新启动资源管理器的解决方案。感谢您的任何/所有帮助!-克里斯