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中的值系统,比你的代码是好的。