首先我不得不说我知道这个话题不是新的,并且在 StackOverflow 上有一些现有的话题,但我没有找到任何解决我的问题的方法。
我知道要解锁 Windows 屏幕(Win 7 或 8)我必须使用 Credential Provider 所以我下载
http://www.microsoft.com/en-us/download/details.aspx?id=4057
并用纯 C++ 编写我的代码。在我的情况下,MS 提供的“SampleHardwareEventCredentialProvider”是完美的匹配。我还阅读了其他 SO 线程,我知道“有 WinLogon 和 LogonUI。LogonUI 负责显示登录窗口和 WinLogon 通知关于用户的操作。Winlogon 对来自 LogonUI 的事件做出反应并对登录用户执行所需的操作,注销用户、锁定会话和解锁会话。”
我试图创建将解锁我的计算机的外部硬件事件。就我而言,我有一个蓝牙事件可以解锁我的 Windows。
我的问题是给定的课程:
class CSampleCredential : public ICredentialProviderCredential
及其实现方法:
HRESULT CSampleCredential::Initialize(
CREDENTIAL_PROVIDER_USAGE_SCENARIO cpus,
const CREDENTIAL_PROVIDER_FIELD_DESCRIPTOR* rgcpfd,
const FIELD_STATE_PAIR* rgfsp
)
我不知道 C++ 代码如何准确地解锁 Windows 屏幕。
是什么让我陷入了困境?我尝试使用 Initialize 方法,因为我看到了类似的示例(但由于不完整而无法重用):
http://blogs.msdn.com/b/securitytools/archive/2009/07/30/how-to-build-custom-logon-ui-s-in-windows-vista.aspx
所以我尝试了两件事: -CSampleCredential::Initialize() -BOOL LogonUser() -with "localhost" "userName" "userPassword"
但他们两个都不适合我。那么将为用户蓝屏解锁的关键点(codeLine)是什么?