在同一台机器上安装32位和64位Informix驱动程序

目前正试图设置一个可以同时处理32位和64位ODBC Informix驱动程序的开发环境。

我没有find任何types的指导或通过网上走,但我确实发现可能导致解决scheme的点点滴滴。 我只是想多一点build议,以确保我在正确的道路上。

驱动程序版本

版本3.70.TC3,Windows(32位)

版本3.70.FC3,Windows x64

资源

我似乎无法find版本3.70.TC33.70.FC3 ,但我直接从IBM网站上find3.70.TC7和3.70.FC7 ,我认为它只是稍微更新的版本。

Informix驱动程序安装

驱动程序安装在以下位置(基于registry项)

  • 32位:C:\ Program Files(x86)\ IBM \ Informix \ Client-SDK \
  • 64位:C:\ Program Files \ IBM \ Informix \ Client-SDK \

registry项

从我可以看到,驱动程序的registry项位于:

  • 32位: HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ ODBC \ ODBC.INI
  • 64位: HKEY_LOCAL_MACHINE \ SOFTWARE \ ODBC \ ODBC.INI

这基本上列出了所有的数据源及其连接细节。 两个位置具有相同数量的具有相同名称和相同键/值对的数据源,除了指向其各自驾驶员位置的Driver键之外; C:\Program Files\C:\Program Files (x86)\

ODBCpipe理员

在%systemdrive%/ Windows / SysWoW64 /odbcad32.exe中find32位ODBCpipe理员

反直觉地,在%systemdrive%/ Windows / System32 /odbcad32.exe中find64位ODBCpipe理员

资源

ODBC.INI

ODBC.INI文件位于C:\Windows\ ,其中该文件的内容列出了与ODBCpipe理器中显示的相同的数据源,并且包含每个数据源的32位驱动程序的键/值对; Driver32=C:\Program Files\IBM\Informix\Client-SDK\bin\iclit09b.dll

现在有趣的是,尽pipe使用了Driver32这个关键字,但是这个值指向了C:\Program Files\path,而不是C:\Program Files (x86)\path,从而将Driver32与64位驱动程序。

我发现下面的页面来解释这个不规范。

WOW64registryredirect器拦截对registry某些部分的调用,并将其redirect到registry的另一部分。 registryredirect会影响HKEY_LOCAL_MACHINE \ SOFTWARE密钥。 由32位应用程序对此键进行的registry调用被redirect到HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node。 因此,例如,当一个32位应用程序调用SQLDataSources时,结果registry调用从HKEY_LOCAL_MACHINE \ SOFTWARE \ ODBC \ ODBC.INIredirect到HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ ODBC \ ODBC.INI,唯一的系统数据源返回的是32位的ODBC驱动程序。

简而言之,连接到64位ODBC驱动程序的32位应用程序将自动根据registry项redirect到32位驱动程序,而64位应用程序则不需要这样的redirect。

如果32位应用程序尝试连接到64位ODBC驱动程序的有效用户数据源,则连接将成功,如果安装了32位版本的驱动程序。 否则,连接将会失败,并显示“架构不匹配”错误。 例如,Microsoft的SQL Server ODBC驱动程序在64位Windows平台上安装 64位库(%WINDIR%\ System32 \ sqlsrv32.dll)和32位库(%WINDIR%\ SysWOW64 \ sqlsrv32.dll)。

对于Informix,每个体系结构的驱动必须单独安装。

问题

什么是ODBC.INI文件的重要性,我可以简单地修改驱动程序的Driver32关键或可能有两个结合?

当执行32位ODBCpipe理员并打开数据源时,我可以修改连接设置,但是当执行64位版本时,我收到以下错误。

64位ODBC管理员 - 错误193

如何将系统当前的ODBCpipe理员更改为64位版本以避免此错误?

问题是我最初安装了3.50版本。 此版本不再支持,也没有64位对应。

决议是安装最新的4.1驱动程序。