我們正在研究一個NSIS安裝程序,它編輯註冊表中的幾個文件類型以更改它們圖標和運行它們的應用程序。
我們的工作流程在Win7/32位,WinXP/32和WinXP/64上正常工作,但在Win7/64上無法正常工作。我們已經在多臺Win7/64計算機上測試過這個問題,並且這兩個Win7/64實例的問題都是一致的。
另外一個細節是,它只有在覆蓋現有的關聯時纔會生效,因爲創建一個新關聯可以正常工作。Windows 7 64位文件和圖標關聯不一致(與Win7/32,WinXP/32和WinXP/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)'
任何幫助非常感謝,特別是不涉及系統重新啓動或重新啓動資源管理器的解決方案。感謝您的任何/所有幫助! -Chris