使用调试模式构建时,凭据提供程序 DLL 无法正确加载

Posted

技术标签:

【中文标题】使用调试模式构建时,凭据提供程序 DLL 无法正确加载【英文标题】:Credential Provider DLL doesn't load properly when built using debug mode 【发布时间】:2014-05-07 15:33:43 【问题描述】:

我已经成功地为 x64 构建了发布模式的 DLL。使用 Register.reg 文件注册后,当我锁定计算机时,凭据提供程序会正确加载。

但是,当我在 x64 的调试模式下构建时,当我锁定我的计算机时,我的凭据提供程序将不会加载。我的构建配置有问题吗?我需要检查什么?

【问题讨论】:

环境路径下是否有运行时的调试版本(msvc?????d.dll, blahblahblah)? @CaptainObvlious 是的,我在 System32 中有 msvcp120d.dll 和 msvcr120d.dll。 @Matt 你能弄清楚是什么原因造成的吗?我现在也遇到了同样的问题 @jvpernis 我想当时我只是打印日志语句而不是解决它。那是很久以前的事了……不记得我是否让它再次工作,但如果我这样做了,我将无法为您提供可重复的步骤。对不起。尝试更新所有内容,重新启动,也可以在虚拟机中尝试。 【参考方案1】:

您可能没有遇到过这个问题,但它可能与其他偶然发现这个问题的人有关。

在我的情况下,我在与构建代码不同的机器上运行凭据提供程序。事实证明,我没有在目标机器上安装 C++ 运行时文件的调试版本。

调试运行时文件不附带您可以从 Microsoft 网站下载的普通 C++ 可再发行包。它们只能从您的 Visual Studio 安装中获得(请参阅 this reference for Visual Studio 2017)。

复制以下文件夹的内容:

[VisualStudioFolder]\VC\Redist\MSVC\[version]\debug_nonredist\x64\Microsoft.VC[version].DebugCRT\

收件人:

C:\Windows\System32

还要确保将手动复制文件的所有者更改为SYSTEM 用户。

请注意,这些文件不允许与您的应用程序一起分发,它们仅可用于开发目的。

【讨论】:

以上是关于使用调试模式构建时,凭据提供程序 DLL 无法正确加载的主要内容,如果未能解决你的问题,请参考以下文章

来自凭据提供程序 DLL 的 HTTPS 请求

使用 Eclipse CDT 创建凭据提供程序

构建模式始终是调试

调试重命名的 DLL?

Visual Studio 中的 DLL 响应太慢

使用 mfc 的 EXE(调试)无法在其他 PC 上运行