如何为XP到Win 8的系统ODBC条目指定INNO设置

时间:2015-03-26 16:55:37

标签: odbc inno-setup

我有一个安装程序,可以创建多个ODBC条目,一个作为用户DSN,一个作为系统DSN。

安装在Windows XP上运行正常。但是当我在64位Windows 7上进行安装时,它会将注册表项安装在错误的位置。

它应该在以下位置安装系统条目:

HKLM\Software\ODBC\ODBC.INI\Castit

但是将它们安装在:

HKLM\Software\Wow6432Node\ODBC\ODBC.INI\Castit

如果我手动创建ODBC条目然后检查注册表,则可在以下位置找到条目:

HKLM\Software\ODBC\ODBC.INI\Castit

我甚至使用HKLM32尝试强制它在正确的位置安装它。但是,如果我使用HKLM64,那么它将它们放在Win 7和Win 8上的正确位置,但是在XP上安装错误。

所以问题是:我如何指定一个可以在XP和Win 8上运行的ODBC条目,并希望它们之间的所有内容。

1 个答案:

答案 0 :(得分:1)

在64位系统上有2个注册表视图:" 32位"和" 64bit"。

32位系统当然只有" 32bit"图。

32位系统上的

HKLM \ Software 等于64位系统上的 HKLM \ Software \ Wow6432Node 视图。

因此,您的密钥是正确的,因为默认情况下,即使在64位系统上,Inno Setup也设置为使用32位视图。

对于多个Windows,您可以检查它是否为64位:

  if IsWin64 then
    // Write 64bit registry keys
  else
    // Write 32bit registry keys

使用适当的RootKey值: HKLM64 用于64位密钥, HKLM32 用于32位密钥,例如:

RegWriteStringValue(HKLM64, 'Software\ODBC\ODBC.INI\Castit','Key', 'Value'));