2012-06-22 36 views
8

Tôi có một thiết lập ứng dụng trong NSIS. Tập đòi hỏi một chìa khóa được tạo ra tại vị trí sau cho ứng dụng của tôi để bắt đầu: - HKEY_LOCAL_MACHINE \ Software \\\ " "VersionNo" 0 HKEY_LOCAL_MACHINE \ Software \ Wow6432Node \\" "VersionNo" "11"Viết giá trị đăng ký trong hệ thống 64 bit

Trong tập lệnh, tôi đã sử dụng: -

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

Phím này được tạo thành công trên hệ thống Windows 7 32 bit. Tuy nhiên, khi tôi cài đặt thiết lập trên hệ thống Windows 7 64 bit, khóa không được tạo ở vị trí trên. Thay vào đó, nó tạo khóa tại: -

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

Kết quả này trong ứng dụng của tôi không bắt đầu sau khi cài đặt.

--Có thể ai đó vui lòng đề xuất lệnh/tập lệnh cho NSIS để bắt buộc tạo khóa (s) theo HKEY_LOCAL_MACHINE \ Software \ cho hệ thống 64 bit thay vì được tạo dưới HKEY_LOCAL_MACHINE \ Software \ Wow6432Node không?

háo hức chờ đợi một giải pháp ....

Trả lời

27

Sử dụng SetRegView để chuyển đổi giữa 32-bit và 64-bit registry. Mã của bạn sẽ có dạng:

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

Cảm ơn. Các giải pháp hoạt động tốt. – Bomzinho

+9

@Bomzinho bạn nên đánh dấu câu trả lời được chấp nhận như là một sự lịch sự đối với Sergius –

Các vấn đề liên quan