2012-06-22 62 views
8

我在NSIS中創建了一個應用程序設置。該組需要在以下位置創建我的應用程序一鍵啓動: - HKEY_LOCAL_MACHINE \ SOFTWARE \\\ 「 」VersionNo進行「 0 HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \\」 「VersionNo進行」, 「11」在64位系統中寫入註冊表值

在腳本中,我使用了: -

 WriteRegDWORD HKLM "SOFTWARE\<Key1>\<Key2>\<Key3>" "VersionNo" 0 
     WriteRegStr HKLM "SOFTWARE\<Key1>\<Key2>" "VersionNo" "11" 

此密鑰在32位Windows 7系統上成功創建。但是,當我在64位Windows 7系統上安裝安裝程序時,不會在上述位置創建密鑰。相反,它會在以下位置創建密鑰: -

 HKEY_LOCAL_MACHINE\Software\Wow6432Node\<Key1>\<Key2>\<Key3>" "VersionNo" 0 
     HKEY_LOCAL_MACHINE\Software\Wow6432Node\<Key1>\<Key2>" "VersionNo" "11" 

這會導致我的應用程序在安裝後無法啓動。

- 可以爲某個64位系統強制創建HKIS_LOCAL_MACHINE \ Software \下的密鑰,而不是在HKEY_LOCAL_MACHINE \ Software \ Wow6432Node下創建該密鑰?

熱切等待溶液....

回答

27

使用SetRegView到32位和64位註冊表之間切換。您的代碼應如下所示:

SetRegView 64 
WriteRegDWORD HKLM "SOFTWARE\<Key1>\<Key2>" "VersionNo" 0 
SetRegView 32 
WriteRegStr HKLM "SOFTWARE\<Key1>\<Key2>" "VersionNo" "11" 
+0

謝謝。該解決方案工作正常。 – Bomzinho

+9

@Bomzinho你應該將答案標記爲對Sergius的禮節 –