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