我編寫了一個允許登錄Windows的CredentialProvider。但今天我發現了這個奇怪的錯誤,GetSerialization()
似乎不接受包含德文'變音'字母,如'ä'或'ü'的密碼。有誰知道解決方案?CredentialProvider不接受帶特殊(德語)字母的密碼
在此先感謝
我編寫了一個允許登錄Windows的CredentialProvider。但今天我發現了這個奇怪的錯誤,GetSerialization()
似乎不接受包含德文'變音'字母,如'ä'或'ü'的密碼。有誰知道解決方案?CredentialProvider不接受帶特殊(德語)字母的密碼
在此先感謝
這將取決於其GetSerialization()
返回密碼格式的細節。
如果您的CredentialProvider像標準密碼提供程序那樣返回序列化的KERB_INTERACTIVE_UNLOCK_LOGON
結構,則結構中的用戶名,密碼和域名值必須全部作爲UNICODE_STRING
值傳遞。請注意0是一個包含當前長度和最大長度值以及16位Unicode(UTF-16LE)字符的緩衝區的結構。由於它們是Unicode,所以它們當然可以用變音符號來保存字母。
但是,如果您的CredntialProvider在窄字符緩衝區中處理密碼,則可能會將您的元音字符處理爲8位Windows CP1252字符。在將它們放入KERB_INTERACTIVE_UNLOCK_LOGON
結構並序列化之前,您需要將它們轉換爲16位Unicode。
謝謝。該錯誤是由unicode字符串轉換錯誤的ANSI導致的。 – Adrian
檢查項目是否設置爲使用unicode字符集。 – Apokal