若要查找 dll 的信息: Windows nt/2000年/XP 使用 KnownDLLs 注册表项

文章翻译 文章翻译
文章编号: 164501 - 查看本文应用于的产品
重要提示: 本文包含有关修改注册表的信息。在修改注册表之前,请务必对其进行备份,并确保您了解如何还原注册表发生问题。有关如何备份、 还原,和编辑注册表单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
256986在 Microsoft Windows 注册表的说明
展开全部 | 关闭全部

本文内容

概要

Microsoft Windows NT、 Windows 2000 和 Windows XP 使用 KnownDLLs 注册表项搜索的 32 位或 16 位 dll,加载 DLL 时。对于 32 位 dll 在 KnownDLLs 注册表项,只会影响隐式加载的 dll 的搜索。对于 16 位 dll 在 KnownDLLs 注册表项会影响两个隐式和显式加载 dll 的搜索。如果您错误地包括 KnownDLLs 注册表项中的 DLL 名称,在 Windows nt/2000年/XP WOW LoadLibrary 无法加载 DLL 位于应用程序的当前目录中。

更多信息

Windows nt/2000年/XP 使用 KnownDLLs 注册表项来确定将使用应用程序的 DLL。有两个不同的 KnownDLLs 注册表项: 会影响在加载 32 位 dll,并会影响的 16 位 dll 加载。KnownDLLs 注册表项中列出的一个 DLL 有时称为这篇文章中的"KnownDLL"。

dll: 16 位

找到以下项中的 16 位 dll KnownDLLs 注册表值:
   HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\WOW
				
的 KnownDLLs 注册表值是由空格分隔的 8.3 格式的 DLL 名称与一个 REG_SZ 字符串。KnownDLLs 值会影响两个隐式和显式加载的 dll。

不 KnownDLLs 的注册表值的情况下 Windows NT WOW 使用以下搜索顺序来定位 DLL:
  1. 使用 DLL 的任务的当前目录。
  2. \WINNT 目录中。
  3. \WINNT\SYSTEM 目录中。
  4. \WINNT\SYSTEM32 目录中。
  5. 为任务使用 DLL 的可执行文件的目录。
  6. 在 PATH 环境变量中列出的目录。
KnownDLLs 的注册表值与 Windows NT WOW 仅查找 \WINNT\SYSTEM32 目录以找到该 DLL 中。如果 KnownDLLs 包括用于一个 DLL,它不位于 \WINNT\SYSTEM32 目录中的一项,LoadLibrary 无法加载 DLL,即使在 5 个其他位置上面的任何 DLL 的位置。

如果 Windows nt/2000年/XP WOW 未能找到 DLL,LoadLibrary 返回错误代码 (未找到文件),2 或隐式链接会导致加载失败父模块。

有关 Windows 95 作为 KnownDLLs 注册 16 位 dll 的方式的信息,请参阅下面 Microsoft 知识库中相应的文章:
141969若要查找 16 位 dll 的 Windows 95 使用 Known16DLLs 注册表项

dll: 32-位

在找到注册表项是为 32 位 dll 在 KnownDLLs:
   HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager
				
的 REG_SZ 注册表值名称是不带扩展名 DLL 的名称。注册表值数据为扩展名为 DLL 的名称。此项会影响只是隐式加载的 dll 不使用 LoadLibrary() API 加载的 dll。

没有此的条目 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 不位于任何上述位置,隐式链接会导致加载失败父模块。

如果一个 KnownDLL 隐式链接到它,DLL 将被视为一个 KnownDLL。例如对于 MAIN.DLL 使用从 CHILD.DLL 的函数。如果在 KnownDLLs 注册表项中列出了 MAIN.DLL,然后 Windows NT 还将 CHILD.DLL 视为一个 KnownDLL。另一个应用程序或使用 CHILD.DLL 的 DLL 将使用已链接到 MAIN.DLL 的 DLL。

Windows NT 将 32 位 KnownDLLs 映射在启动时。重命名或移动该 DLL 没有任何效果的 DLL 的应用程序将加载 ; 它仍会使用在启动时 \WINNT\SYSTEM32 中的一个。

若要更改 Windows NT 的加载方式 KnownDLLs 使用 ExcludeFromKnownDlls 注册表值位于:
   HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager
				
注: 使用 RegEdt32 注册表编辑器来修改此注册表值代替。

此 REG_MULTI_SZ 注册表值中包含的 dll 中每个字符串的一个 DLL 的 8.3 格式的名称。如果 DLL 出现在 $ ExcludeFromKnownDlls,然后 Windows NT 确实不视为 DLL 一个 KnownDLL 即使它出现在 $ KnownDLLs 注册表项。在开发 DLL 是使用由很多其他 KnownDLLs 和一定要替换,而不必重新启动 Windows NT 测试新版本时,这是很有用。

对前面提到的注册表项的更改要求在本地计算机的管理权限。使用 KnownDLLs 的从某人处 deceptively 替换通过将一个欺诈 DLL 放在应用程序目录中的 api 保护系统。

有关 Windows 95 作为 KnownDLLs 注册 32 位 dll 的方式的信息,请参阅下面 Microsoft 知识库中相应的文章:
151646有关 32 位 dll 的 Windows 95 使用 KnownDLLs 注册表项
警告: 不正确地使用注册表编辑器可以会导致严重的问题,可能会要求您重新安装操作系统。Microsoft 不能保证可以解决导致错误地使用注册表编辑器的问题。使用注册表编辑器需要您自担风险。

有关如何编辑注册表的信息查看注册表编辑器 (Regedit.exe) 或 Regedt32.exe 中的在注册表中添加和删除信息"和编辑注册表数据帮助主题中的"改变项和值"帮助主题。请注意您应该备份注册表之前对其进行编辑。 如果运行的 Windows NT 也应更新紧急修复磁盘 (ERD)。

属性

文章编号: 164501 - 最后修改: 2006年11月21日 - 修订: 4.1
这篇文章中的信息适用于:
  • Microsoft Win32 Application Programming Interface?当用于
    • Microsoft Windows NT 4.0
    • the operating system: Microsoft Windows 2000
    • the operating system: Microsoft Windows XP
关键字:?
kbmt kbdll kbinfo kbkernbase kbregistry KB164501 KbMtzh
机器翻译
注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。
点击这里察看该文章的英文版: 164501
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

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