В Windows каковы предпочтения того, как Windows просматривает эти папки в поисках .dll? Например, если у меня есть две версии одной и той же dll, одна в папке System 32, а другая в системном пути, где сначала будет искать Windows?
Windows сначала ищет «известные библиотеки DLL», такие как Kernel32.dll и User32.dll.
Затем Windows ищет библиотеки DLL в следующей последовательности:
Системный каталог Windows. Функция GetSystemDirectory извлекает путь к этому каталогу.
Каталог Windows. Функция GetWindowsDirectory извлекает путь к этому каталогу.
Каталог, в котором находится исполняемый модуль для текущего процесса.
Текущий каталог.
Каталоги, перечисленные в переменной среды PATH.
Обратите внимание, что в 64-битных Windows 32-битные процессы используют 32-битный каталог system32, а не 64-битный.
Немного отличается pre sp1 от 2k3 или XP.
Зависит от вашего PATH
переменная окружения, но обычно %windir%\System32
добавляется перед %windir%
.
В моей шляпе разработчика: по возможности я бы избегал установки чего-либо в любую из этих папок, особенно для последних версий ОС с поддержкой параллельной сборки (например, XP / Vista / 2008).
Если вы установили приложение, которое помещает .DLL в оба места, я бы связался с разработчиком, чтобы исправить это.
Удачи на этом:
http://msdn.microsoft.com/en-us/library/7d83bc18(VS.80).aspx
Обратите внимание на "Порядок изменился!" комментарий, который ссылается на эту страницу:
Загрузка DLL осуществляется функцией Windows API LoadLibrary, и порядок поиска описан в соответствующей документации: http://msdn.microsoft.com/en-us/library/ms684175(VS.85).aspx