What is the difference between placing a .dll in windows\system32 and windows\system? To my understanding if you put a .dll in the root directory of a program it will use that one by default. I just got to thinking about this there must be some reason why windows has multiple directories for .dlls any ideas?
As far as I know windows\system is for old legacy 16-bit drivers and dlls. Windows32 is for 32-bit stuff and that got introduced with Windows NT 3.1. The separation is made I believe to support a 16-bit layer for legacy software that one wants to run on newer machines and not have their DLLs or drivers conflict with the 32-bit ones.
And to make things even more confusing.. :)
On 64-bit windows system32 is used for 64-bit dlls, and 32-bit dlls are in syswow64.
And a 32-bit application which tries to load a dll from system32 gets transparently redirected to syswow64, where as a 64-bit application gets access to the real system32 dir.