A Tangled Web of Insanity

What do you do if you need to move from a 32-bit to a 64-bit environment while still retaining compatibility with older software? You retain a compatibility subsystem of some sort, that provides a runtime environment for 32-bit applications, and by extension for the necessary 32-bit libraries and system services.

This is not easy, but it can be done. It can also backfire. A case in point is the ODBC data source administration program in Windows. It's called "odbcad32.exe". Presumably the current - default - 64-bit version is called "odbcad32.exe" for compatibility reasons. That's the only reason I can think of, although I could be wrong. It's a tiny bit confusing, but we prevail, of course. It's a minor issue.

However, the old 32-bit version is also called "odbcad32.exe". This is a little bit more confusing, to be honest.

It's worth noting, because in a typical Windows system we need both 32-bit and 64-bit data sources, and these data sources only show up in the corresponding version of odbcad32.exe.

Both versions of odbcad32.exe have the same version number and carry the same description: "ODBC Administrator". They have slighty different modifcation dates and different sizes but everything else looks the same. 

If you start them up, they both have the window title "ODBC Data Source Administrator", and in fact they both show the same list of "Core components" on the "About" tab. All from %windir%\System32. This is where things are starting to be really confusing.

This is on Windows 7, by the way, but there's no reason to believe that things have changed in Windows 8/8.1/10. Quite the opposite, in fact.

If you search for "odbc" in the start menu, you find "ODBC Data Sources". "Properties" will tell you that this is in fact %windir%\system32\odbcad32.exeThis is the 64-bit version. After all, System32 is the main system directory, and regardless of the directory name, this is where the 64-bit system files live.

If you want to run the 32-bit version (which you probably do, since if you are still using ODBC it's very likely that it's a legacy application), you have to browse to %windir%\SysWOW64. Remember, it's still called "odbcad32.exe", but in this directory we find the 32-bit version.

The reason the directory is called "SysWOW64" is that it contains a subsystem called "Windows 32-bit on Windows 64-bit", which is a compatibility layer - the abovementioned runtime environment, including system tools and libraries. Unless you work with this stuff daily, this is way beyond confusing.

So to recap, both the 32-bit and the 64-bit version of the ODBC Administration tool are called "odbcad32.exe". The way to tell them apart is that the 64-bit version is in the System32 directory, and the 32-bit version is in the SysWOW64 directory.

Every single design decision that caused this mess have its reasons and they sort of make sense, but the end result is so insane that it baffles me every time I run into it.

Comments

You really make it seem so easy with your presentation but I find this matter to be really
something which I think I would never understand.
It seems too complicated and extremely broad for me. I am looking
forward for your next post, I'll try to get the hang of
it!

My homepage - Yoga Weight loss Tip