如何使用 Visual Studio 2012 生成 Windows 7 凭据提供程序示例
How can I build the Windows 7 Credential Provider Samples using Visual Studio 2012?
我正在努力创建自定义凭据提供程序包装器。Windows 7 SDK 示例凭据提供程序包装器可以完成我想要的大部分操作,因此我的计划是从它开始并进行修改,以便它完成我需要它的所有操作。
但是,我遇到了一个小问题。 我想使用 Visual Studio 2012 来完成开发工作。 这些示例是使用 Visual Studio 2008 创建的。 在使用 Visual Studio 2008 时,我已经能够成功地构建和使用示例提供程序。 但是,当我尝试将项目导入Visual Studio 2012时,它可以很好地编译,但是当我尝试使用它时
它不起作用。我已经能够使用 WinDbg 验证凭据提供程序在锁定/登录屏幕上时是否正在加载,但未显示任何内容。 不幸的是,我对WinDbg知之甚少,无法使用该工具追踪问题。
我在研究使用 win32 平台为 64 位计算机编译凭据提供程序时出现的问题时,在其他地方看到了一个建议。 我使用的是 64 位计算机,并且已确保在两个版本的 Visual Studio 中使用 x64 平台进行编译。
另外值得一提的是,在进行VS2008到VS2012的转换后,似乎没有问题,我不得不将"运行时库"设置从"多线程DLL(/MD("更改为"多线程(/MT("。 这是VS2008项目中的原始设置。 可以在不进行此更改的情况下让凭据提供程序"工作"(即不抛出有关缺少 DLL 依赖项的错误(,但我必须首先为 Visual Studio 2012 安装 Visual C++ Redistributable。 进行此更改将消除该依赖项。
关于如何解决此问题并在VS2012中成功编译凭据提供程序示例的任何建议?
更新
在同一台计算机上安装VS2008和VS2012后,我能够将"平台工具集"属性从"Visual Studio 2012(v110("更改为"Visual Studio 2008(v90("。 进行此更改后,编译工作,凭据提供程序的工作方式与直接使用 VS2008 进行编译时一样。 此测试未更改其他设置。 我可以使用这个解决方案,但似乎我应该能够使用 VS2012 平台工具集让它工作,所以我宁愿暂时不解决这个问题,因为 VS2008 Linker 可能非常有问题。
事实证明,随着 Windows 8 的发布以及随后对凭据提供程序的更改,从 Visual Studio 2012 开始,常量CLSID_PasswordCredentialProvider开始指向 v2 密码凭据提供程序,而不是 v1 密码凭据提供程序(Windows 7 使用的版本(。 因此,为了使包装的凭据提供程序示例正确编译(这是我正在测试的示例(,有必要更改 CSampleProvider 中的以下行.cpp:
hr = CoCreateInstance(CLSID_PasswordCredentialProvider, NULL, CLSCTX_ALL, IID_PPV_ARGS(&pUnknown));
改为指向 V1 凭据提供程序:
hr = CoCreateInstance(CLSID_V1PasswordCredentialProvider, NULL, CLSCTX_ALL, IID_PPV_ARGS(&pUnknown));
完成此操作并重新编译并安装项目后,它按预期工作。
有关此问题的其他信息,请访问:http://social.msdn.microsoft.com/Forums/windowsdesktop/en-US/376d6eb6-1a40-4721-abdc-27870966a1da/how-can-i-build-the-windows-7-credential-provider-samples-using-visual-studio-2012?forum=windowsgeneraldevelopmentissues
- 试图在visual studio上用C++创建一个桌面应用程序
- 在Windows 10上使用Visual Studio 2019构建的Tesseract API c ++程序在Wind
- 如何为 C++ Visual Studio 2019 指定应用程序图标?
- Ctrl + 不适用于在 Visual Studio 中运行该程序
- 使用 Visual Studio 2019 构建 Hello World wxwidgets 应用程序时出错
- 无法在 Visual Studio 2010 中构建 Allegro C++ 程序
- Visual Studio中的wxwidgets应用程序给出错误"LNK2019 unresolved external symbol"
- 在Visual Studio中单实例Qt应用程序版本5.11.1中,在所有其他窗口的顶部打开Qt MainWindow
- 程序在 Visual Studio 中停止运行时终止
- 将控制台应用程序直接输出到Visual Studio而不是外部Windows控制台中
- Visual Studio 如何在内核模式驱动程序项目中使用C++标准库?
- 如何获得CMake Tools以在Visual Studio Code中编译具有C++11(或更高版本)功能的程序?
- C++中的XAML桌面应用程序(Visual Studio Ultimate 2012 RC)
- 远程调试 Windows 8.1 驱动程序 Visual Studio 2013
- 向安装项目Win32应用程序Visual Studio添加依赖项
- 如何打包/发送程序(Visual Studio 2013)
- 调用Fl_Double_Window的隐藏方法在多线程 FLTK C++应用程序 (Visual Studio 2010
- 编写简单的windows服务器应用程序(Visual c++),使iPhone / Android可以通过Wifi检索值
- 添加,保存数据从MFC应用程序(Visual Studio 2015)到SQL Server
- 在控制台应用程序(visual studio)中使用VTK -访问违规