2010-12-13 38 views
8

Tôi tạo ra một thiết lập với Inno Setup và muốn truy vấn đăng ký sử dụng Pascal ScriptInno Setup RegKeyExists trên 64 bit

if RegKeyExists(HKEY_LOCAL_MACHINE, 'SOFTWARE\Classes\\Installer\UpgradeCodes\342603A924F08FA4B95B5C283FC13D13') then 

thiết lập của tôi là 32bit (như là phần mềm của tôi, tôi muốn cài đặt), nhưng trên Hệ thống 64 bit, truy vấn được chuyển hướng đến HKCR\Wow6432Node\\Installer\UpgradeCodes

Tất nhiên, khóa này không được tìm thấy, mặc dù không có khóa. Làm cách nào tôi có thể phát hiện khóa mặc dù thiết lập của tôi vẫn là 32 bit?

Trả lời

21

Tôi đã tìm ra. Bạn có thể tạo một hàm helper như thế này trong kịch bản của bạn:

function GetHKLM: Integer; 
begin 
    if IsWin64 then 
    Result := HKLM64 
    else 
    Result := HKLM32; 
end; 

Sau đó, bạn sử dụng nó như ví dụ .:

RegQueryStringValue(
    GetHKLM, 'SYSTEM\CurrentControlSet\Control\Session Manager\Environment', 'XYZ', Variable); 
+0

Cảm ơn bạn đã trả lời. –

+0

Cảm ơn bạn .... Tôi đã chiến đấu này trong giờ –

+1

Làm thế nào để bạn khai báo ** Key **? Loại đó là gì? Tôi chỉ gặp lỗi không khớp loại. – NickG

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