【问题标题】:Windows Password Filter DLL not loadingWindows 密码过滤器 DLL 未加载
【发布时间】:2015-04-14 12:03:01
【问题描述】:

我正在尝试根据this devx article 中的示例在 C++ 中实现一个非常基本的 Windows 密码过滤器

但是 LSA 没有加载 DLL(msinfo32 中加载的模块中没有任何内容),尽管设置了适当的 reg 条目并且 DLL 被复制到 system32 并重新启动。这发生在 2003 x64 和 2008R2(显然也是 x64)上。到目前为止,我已经搜索了 stackoverflow 并实施了所有建议。

我正在使用 VS2012。它设置为 x64 和 /MT(所以我不需要 redist 对吗?)并且我确保正确引用了 .def 文件。在dependency walker中,我可以看到正确导出的三个函数,尽管它说“由于隐式依赖模块中缺少导出函数,至少一个模块具有未解析的导入”。并声称 kernel32.dll 缺少一些导入(不确定这是否相关)。

如何调试 LSA 应该加载 DLL 时发生的情况?注意我不是开发人员,所以上面的一些内容相当模糊,尤其是在编译/链接和导出函数时的行为。

非常感谢

【问题讨论】:

    标签: c++ visual-c++ dll lsa


    【解决方案1】:

    查看信息后:https://support.microsoft.com/en-us/kb/2686224

    我发现我们遵循的未指定路径和文件扩展名的信息对于 server 2012 不正确。我使用此信息更新了注册表,并将 x64 dll 与 msvcp100.dll 和 msvcr100 一起放入 System32 文件夹中。 dll(来自我编译 dll 的机器的 system32 目录)。重启,测试,BAM!

    检查您的系统事件日志,查找 Directory-Services-SAM 的错误条目 它会说:密码通知 DLL C:\Windows\System32\PasswordFilterRegEx.dll 加载失败,错误 126 -或- 密码通知DLL C:\Windows\System32\PasswordFilterRegEx.dll 加载失败,错误 193

    126 表示它无法找到 dll 本身(注册表项中可能缺少路径)或缺少依赖项(在我的情况下为 msvcp100.dll 和 msvcr100.dll)

    193 表示由于架构不匹配而无法加载 dll(例如,您正在运行 32 位操作系统但尝试加载 64 位 dll,反之亦然)

    【讨论】:

    • 这并不能真正回答问题。如果您有其他问题,可以点击 提问。一旦你有足够的reputation,你也可以add a bounty 来引起对这个问题的更多关注。 - From Review
    • 这怎么不能回答问题?我告诉他如何解决他遇到的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-04
    • 2010-11-06
    • 2017-07-09
    • 1970-01-01
    • 2012-09-30
    • 2012-04-03
    • 2018-07-04
    相关资源
    最近更新 更多