DLL в System32 и системный путь

DLL в System32 и системный путь

В Windows, каковы предпочтения того, как Windows просматривает эти папки, чтобы найти .dll? Например, если у меня есть две версии одной и той же dll, одна в папке System 32 и одна в System Path, где Windows будет искать в первую очередь?

решение1

Сначала Windows ищет «известные библиотеки DLL», такие как Kernel32.dll и User32.dll.

Затем Windows ищет библиотеки DLL в следующей последовательности:

Системный каталог Windows. Функция GetSystemDirectory извлекает путь к этому каталогу.

Каталог Windows. Функция GetWindowsDirectory извлекает путь к этому каталогу.

Каталог, в котором находится исполняемый модуль текущего процесса.

Текущий каталог.

Каталоги, перечисленные в переменной среды PATH.

Обратите внимание, что в 64-битной Windows 32-битные процессы используют 32-битный каталог system32, а не 64-битный.

Он немного отличается от 2k3 или XP до sp1.

решение2

Зависит от PATHпеременной окружения, но обычно %windir%\System32добавляется перед %windir%.

Надев шляпу разработчика: по возможности я бы избегал установки чего-либо в эти папки, особенно для последних версий ОС с поддержкой параллельной сборки (например, XP/Vista/2008).

Если вы установили приложение, которое поместило .DLL в оба места, то я бы посоветовал обратиться к разработчику, чтобы он исправил это.

решение3

Наслаждайтесь этим:

http://msdn.microsoft.com/en-us/library/7d83bc18(VS.80).aspx

Обратите внимание на комментарий «Заказ изменился!», ссылающийся на эту страницу:

http://msdn.microsoft.com/en-us/library/ms972822.aspx

решение4

Загрузка DLL обрабатывается функцией Windows API LoadLibrary, порядок поиска описан в документации:http://msdn.microsoft.com/en-us/library/ms684175(VS.85).aspx

Связанный контент