我正在编写一个凭据提供程序,它可以在用户登录Windows帐户时更正用户密码,并且使用错误的键盘语言设置意外键入密码(例如乌克兰语而非拉丁语,例如)。相同的键但不同的字母。现在我需要一种方法来拦截用户输入的密码,如果输入错误,则需要更正密码。作为起点,我使用Windows SDK中的凭据提供程序。它在标准模式下工作正常(如默认的CP)。但我找不到从哪里获得并更正用户输入的密码。我认为HRESULT CSampleCredential::GetStringValue(DWORD dwFieldID, PWSTR* ppwz)
修改登录到Windows帐户时用户输入的密码
方法是正确的做法。与
hr = SHStrDupW(ppwstrCorrected, ppwz);
凡ppwstrCorrected中包含的任何原始密码或纠正一个替代
hr = SHStrDupW(_rgFieldStrings[dwFieldID], ppwz);
字符串。但是这没有任何作用。证书提供者继续像以前一样工作。我甚至试图通过在GetStringValue被调用时返回一些乱码来“打破”我的提供者。但样本提供者仍然是标准样本。是的,我试图通过示例提供程序登录,而不是标准,因为它们很容易通过位图上的位图进行区分。那么,我可以在哪里拦截进入Windows进行检查的输入密码?
谢谢你的回应!我找到了解决问题的方法, – ambeid 2014-12-02 12:42:09