Inno setup 从InnoSetup的代码部分中的HKLM和HKLM64读取注册表值
我有一个场景时刻-对不起( 以这个代码为例:Inno setup 从InnoSetup的代码部分中的HKLM和HKLM64读取注册表值,inno-setup,pascalscript,Inno Setup,Pascalscript,我有一个场景时刻-对不起( 以这个代码为例: {如何备份} dwBackupAtShutdownHow:=0; RegQueryWordValue(HKLM64, “软件\MeetChedAssist\Meeting Schedule Assistant\Options”, “BackupAtShutdownMode”,dwBackupAtShutdownHow); 如果(dwBackupAtShutdownHow=1),则 开始 radBackupModeManual.Checked:=真;
{如何备份}
dwBackupAtShutdownHow:=0;
RegQueryWordValue(HKLM64,
“软件\MeetChedAssist\Meeting Schedule Assistant\Options”,
“BackupAtShutdownMode”,dwBackupAtShutdownHow);
如果(dwBackupAtShutdownHow=1),则
开始
radBackupModeManual.Checked:=真;
结束
否则开始
radBackupModeAuto.Checked:=真;
结束;
我需要更改它,以便它同时检查HKLM64
和HKLM
是否存在密钥。是否正确:
{如何备份}
dwBackupAtShutdownHow:=0;
如果(IsWin64)和RegQueryWordValue(HKLM64,
“软件\MeetChedAssist\Meeting Schedule Assistant\Options”,
“BackupAtShutdownMode”,dwBackupAtShutdownHow)
其他的
RegQueryWordValue(HKLM,
“软件\MeetChedAssist\Meeting Schedule Assistant\Options”,
“BackupAtShutdownMode”,dwBackupAtShutdownHow);
如果(dwBackupAtShutdownHow=1),则
开始
radBackupModeManual.Checked:=真;
结束
否则开始
radBackupModeAuto.Checked:=真;
结束;
这是正确的方法吗?因此,我最终得到了,例如:
if (IsWin64) then
begin
RegQueryDWordValue(HKLM64,
'Software\MeetSchedAssist\Meeting Schedule Assistant\Options',
'BackupAtShutdownWhat', dwBackupAtShutdownWhat)
end else RegQueryDWordValue(HKLM,
'Software\MeetSchedAssist\Meeting Schedule Assistant\Options',
'BackupAtShutdownWhat', dwBackupAtShutdownWhat);
例如,我最终得到了:
if (IsWin64) then
begin
RegQueryDWordValue(HKLM64,
'Software\MeetSchedAssist\Meeting Schedule Assistant\Options',
'BackupAtShutdownWhat', dwBackupAtShutdownWhat)
end else RegQueryDWordValue(HKLM,
'Software\MeetSchedAssist\Meeting Schedule Assistant\Options',
'BackupAtShutdownWhat', dwBackupAtShutdownWhat);
它可能是正确的。也可能不是。这取决于你到底想做什么。@MartinPrikryl我只想涵盖所有的基础。安装程序在节点HKLM和HKLM64中创建两个条目(如果是win 64)。然后,
InitializeWizard
读取这些设置,因为它们是上次默认设置。因此,如果是win 64 windows,则可以安全地读取HKLM64,否则将读取HKLM。我不想使用GetPreviousData
等,因为我的应用程序将读取HKLM密钥以获取已安装的默认值。如果您知道所有64位上都存在HKLM64中的值系统,您的代码是可以的。它可能是正确的。也可能不是。这取决于您到底想做什么。@MartinPrikryl我只想涵盖所有基础。安装程序在节点HKLM和HKLM64(如果是win 64)中创建两个条目。然后,InitializeWizard
读取这些设置,因为它们是上次默认设置。因此,如果是win 64 windows,则可以安全地读取HKLM64,否则将读取HKLM。我不想使用GetPreviousData
等,因为我的应用程序将读取HKLM密钥以获取已安装的默认值。如果您知道所有64位上都存在HKLM64中的值系统,比你的代码是好的。