ИНФОРМАЦИЯ: Windows NT, 2000 и XP запись реестра KnownDLLs использует для поиска библиотек DLL

Переводы статьи Переводы статьи
Код статьи: 164501 - Vizualiza?i produsele pentru care se aplic? acest articol.
ВАЖНЫЕ: Эта статья содержит сведения об изменении реестра. Перед изменением реестра убедитесь, что его резервное копирование и убедитесь, что вы знаете, как восстановить реестр в случае возникновения проблем. Сведения о том, как резервное копирование, восстановление и редактирования реестра щелкните следующий номер статьи базы знаний Майкрософт:
256986 Описание реестра Microsoft Windows
Развернуть все | Свернуть все

В этой статье

Аннотация

Windows NT Microsoft Windows 2000 и Windows XP использует записи реестра KnownDLLs поиск 32- или 16-разрядные библиотеки DLL при загрузке библиотеки DLL. Для 32-разрядных библиотеках DLL KnownDLLs реестра затрагивает только поиск неявно загружаемые DLL. Для 16-разрядных библиотек DLL KnownDLLs реестра влияет на поиск обе явно и неявно загрузки библиотеки DLL. Если неправильно включать имя библиотеки DLL в записи реестра KnownDLLs, LoadLibrary в WOW Windows NT, 2000 и XP не удается загрузить DLL-ФАЙЛ находится в текущем каталоге приложения.

Дополнительная информация

Windows NT, 2000 и XP использует запись реестра KnownDLLs, чтобы определить, какие библиотеки DLL, приложение будет использовать. Существует две разных записи реестра KnownDLLs: один, влияет на загрузку 32-разрядных библиотеках DLL и один, который влияет на загрузку 16-разрядных библиотеках DLL. DLL, перечисленных в записи реестра KnownDLLs иногда называют «KnownDLL» в этой статье.

DLL: 16-бит

Для 16-разрядных библиотеках DLL значение реестра KnownDLLs находится ниже ключ:
   HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\WOW
				
Значение реестра KnownDLLs является строкой REG_SZ с DLL имена в формате 8.3 формат, разделенные пробелом. Значение KnownDLLs влияет на неявно и явно загрузить DLL.

Без значение реестра KnownDLLs WOW Windows NT использует следующие Порядок поиска для обнаружения библиотеки DLL:
  1. Текущий каталог задачи, использующей библиотеку DLL.
  2. В каталоге \WINNT.
  3. Каталог \WINNT\SYSTEM.
  4. Каталог \WINNT\SYSTEM32.
  5. Каталог исполняемого файла для задачи, использующего библиотеку DLL.
  6. Каталог, указанный в переменной среды PATH.
С значение реестра KnownDLLs WOW Windows NT только выглядит Каталог \WINNT\SYSTEM32 найдите библиотеку DLL. Если KnownDLLs включает записи для библиотеки DLL, которая не находится в папке \WINNT\SYSTEM32 Не удается загрузить DLL, даже если расположен на любом из библиотеки DLL LoadLibrary 5 других местах выше.

Если WOW Windows NT, 2000 и XP не удается найти библиотеку DLL, функция LoadLibrary возвращает код ошибки 2 (файл не найден) или неявное связывание вызывает родительский Сбой загрузки модуля.

Сведения о том, как Windows 95 регистрирует как KnownDLLs 16-разрядных библиотеках DLL следующую статью базы знаний Майкрософт:
141969Windows 95 использует Known16DLLs реестра найти 16 бит Библиотеки DLL

DLL: 32-разрядные

Для 32-разрядных библиотеках DLL раздела реестра KnownDLLs найти по адресу:
   HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager
				
Имя значения реестра REG_SZ является имя библиотеки DLL без расширение. Значение параметра реестра — это имя библиотеки DLL с помощью расширение. Эта операция затрагивает только неявно загружаемые DLL, не библиотеки DLL загружаются с помощью LoadLibrary() API.

Без этой операции Windows NT использует следующий порядок поиска для Найдите библиотеку DLL:
  1. Каталог исполняемого файла процесса, который загружает библиотеку DLL.
  2. Текущий каталог процесс, который загружает библиотеку DLL.
  3. Каталог \WINNT\SYSTEM32.
  4. В каталоге \WINNT.
  5. Каталог, указанный в переменной среды path.
С помощью реестра KnownDLLs Windows NT использует следующий поиск Чтобы обнаружить библиотеку DLL:
  1. Каталог \WINNT\SYSTEM32.
  2. Каталог исполняемого файла процесса, который загружает библиотеку DLL.
  3. Текущий каталог процесс, который загружает библиотеку DLL.
  4. В каталоге \WINNT.
  5. Каталог, указанный в переменной среды PATH.
Если библиотека DLL не находится в местах, указанных выше, неявное связывание вызывает родительский модуль сбой загрузки.

Библиотеки DLL рассматривается как KnownDLL, если KnownDLL неявно содержит ссылки на него. Для в примере MAIN.Библиотека DLL использует функции из ДОЧЕРНИХ.DLL. Если MAIN.DLL присутствует в раздел реестра KnownDLLs, затем Windows NT также рассматривает ДОЧЕРНИХ.Библиотеки DLL в качестве KnownDLL. Другое приложение или библиотека DLL, использующая ДОЧЕРНИХ.Библиотека DLL будет использовать библиотеку DLL который был связан с MAIN.DLL.

Windows NT сопоставляет KnownDLLs 32-разрядных во время загрузки. Переименование или перемещение DLL не имеет никакого эффекта, на котором будет загружать DLL приложения; он по-прежнему использует тот, который был в \WINNT\SYSTEM32 во время загрузки.

Чтобы изменить способ загрузки Windows NT KnownDLLs используйте ExcludeFromKnownDlls расположенный в значение реестра:
   HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager
				
Примечание: Используйте команду RegEdt32 вместо RegEdit, чтобы изменить это значение реестра.

Это значение реестра REG_MULTI_SZ содержит имена библиотек DLL в формате 8.3 формат одного DLL в строке. Если библиотека DLL в ExcludeFromKnownDlls, а затем Windows NT не обрабатывать DLL как KnownDLL, даже если он указан в Раздел реестра KnownDLLs. Это полезно при разработке библиотеки DLL, который используется много других KnownDLLs и его необходимо заменить и тестирования нового Строит без перезагрузки Windows NT.

Внесение изменений в вышеупомянутую реестра требует административных привилегии на локальном компьютере. Использование KnownDLLs защищает системы от кого-либо обманчиво замены интерфейсов API, поместив незарегистрированные библиотеки DLL в каталог приложения.

Сведения о том, как Windows 95 регистрирует как KnownDLLs 32-разрядных библиотеках DLL следующую статью базы знаний Майкрософт:
151646Раздел реестра KnownDLLs использует 95 Windows найти 32-разрядных библиотеках DLL
Предупреждение: Неправильное использование редактора реестра может привести к серьезным проблемам может потребоваться переустановка операционной системы. Корпорация Майкрософт не может гарантирует, что проблем, связанных с неправильным использованием редактора реестра может быть решена. Используйте редактор реестра на свой страх и риск.

Сведения о редактировании реестра просмотра "Изменение разделов и Значения» справки редактора реестра (Regedit.exe) или "Добавление и удаление Сведения в реестре"и"Редактирование данных реестра"разделы справки в Regedt32.exe. Обратите внимание, что следует резервной копии реестра перед его изменением. При работе с Windows NT следует также обновить ваш аварийного Диск восстановления (ERD).

Свойства

Код статьи: 164501 - Последний отзыв: 27 октября 2012 г. - Revision: 6.0
Информация в данной статье относится к следующим продуктам.
  • Microsoft Win32 Application Programming Interface
Ключевые слова: 
kbdll kbinfo kbkernbase kbregistry kbmt KB164501 KbMtru
Переведено с помощью машинного перевода
ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.
Эта статья на английском языке: 164501

Отправить отзыв

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com