-1

我写了一个允许登录到 Windows 的 CredentialProvider。但是今天我发现了这个奇怪的错误,它GetSerialization()似乎不接受包含德语“变音”字母的密码,如“ä”或“ü”。有谁知道解决方案?

提前致谢

4

1 回答 1

1

这取决于GetSerialization()返回密码的格式的详细信息。

如果您的 CredentialProviderKERB_INTERACTIVE_UNLOCK_LOGON像标准密码提供程序一样返回序列化结构,则结构中的用户名、密码和域名值都必须作为UNICODE_STRING值传递。请注意,这UNICODE_STRING是一个包含当前长度和最大长度值的结构以及 16 位 Unicode (UTF-16LE) 字符的缓冲区。由于它们是 Unicode,它们当然可以保存带有变音符号的字母。

但是,如果您的 CredntialProvider 在一个狭窄的字符缓冲区中处理密码,您可能会将您的元音变音字符处理为 8 位 Windows CP1252 字符。KERB_INTERACTIVE_UNLOCK_LOGON在将它们放入结构中并对其进行序列化之前,您需要将它们转换为 16 位 Unicode 。

于 2012-10-02T17:13:03.207 回答