LoadLibrary 函数在 Windows 中的模拟线程上返回STATUS_DLL_NOT_FOUND错误

本文提供了一种解决方法,用于解决 LoadLibrary 函数在 Windows 中模拟线程上返回STATUS_DLL_NOT_FOUND错误的问题。

适用于: Windows Server 2019、Windows Server 2016、Windows 10 - 所有版本
原始 KB 数: 4015510

现象

在 Windows 10 和 Windows Server 版本 1709 或更高版本中,如果在使用 LoadLibrary 函数加载 DLL 时未授予对进程令牌本身的动态链接库(DLL)访问权限,则会在模拟线程上收到“STATUS_DLL_NOT_FOUND”错误消息。

原因

注意

此行为在 Windows 中设计。

发生此行为的原因如下:

  • 假设所有基于 Windows 的操作系统都有权访问进程令牌引用的 DLL。
  • 无论上述项目符号点中描述的条件如何,在 Windows 10、Windows Server 2016、Windows Server 2019 和 Windows Server 版本 1909 中,此问题在早期版本的 Windows 中更为明显。

解决方法

若要解决此问题,请确保进程令牌有权访问进程加载的所有可执行文件。

Status

Microsoft 已经确认这是一个列于“适用范围”部分的 Microsoft 产品问题。

数据收集

如果需要 Microsoft 支持方面的帮助,建议按照使用 TSS 针对与部署相关的问题收集信息中所述的步骤收集信息。