In an effort to ease the transition from 32bit to 64bit, Microsoft Windows has two different locations for storing shared 32bit and 64bit DLLs. The CONNX OLE DB Provider, and ODBC Driver are installed into the default location for shared windows DLLs. Under 32bit windows, this location is (typically) C:\WINDOWS\SYSTEM32. Under 64bit windows, it is C:\WINDOWS\SYSWOW64. Also under 64bit windows, the 64bit DLL shared location is C:\WINDOWS\SYSTEM32. At first this may seem backwards, and counter intuitive. The reason Microsoft choose these locations was to provide the maximum about of backward compatibility possible.
Architectural component |
64-bit Windows |
32-bit Windows |
---|---|---|
Directory name for shared 32bit DLLs |
C:\WINDOWS\SYSWOW64 |
C:\WINDOWS\SYSTEM32 |
Directory name for shared 64bit DLLs |
C:\WINDOWS\SYSTEM32 |
Not Applicable |
A key to making these locations work seamlessly is something called WOW64 file redirection. On a 64bit windows, when a 32bit process attempts to open a file in C:\WINDOWS\SYSTEM32 - it is automatically redirected to C:\WINDOWS\SYSWOW64.
On 64bit windows, the 32bit CONNX ODBC Driver and OLE DB Provider are located in C:\WINDOWS\SYSWOW64. The 64bit CONNX ODBC Driver and OLE DB Provider are located in C:\WINDOWS\SYSTEM32.
On 32bit windows, the 32bit CONNX ODBC Driver and OLE DB Provider are located in C:\WINDOWS\SYSTEM32.