Я пытаюсь разработать Credentialprovider v2. Я экспериментирую с samplecredentialproviderv2, предоставленным Microsoft. После установки распространяемого пакета 2013 и компиляции для правильной архитектуры я зарегистрировал его, и он заработал.
Моя проблема в том, что это работает только на первой показанной пользовательской плитке. Если я перечисляю более одной пользовательской плитки, она либо отображается только в одной пользовательской плитке, либо возникает ошибка и уничтожается мой пользовательский интерфейс входа в систему.
Я знаю, что вопрос очень похож на этот one . Здесь я могу сказать, что пробовал решение, изложенное в упомянутом документе Microsoft. Существует функция, которая указывает, отображается ли плитка «другой пользователь», и эта функция работает достаточно хорошо. Единственное, что else if не сработает, потому что, если вы получите легальную плитку, getSid не доберется до else if. Таким образом, если вы вернете в getSid нулевой sid и hr_false, CredentialProvider будет показан другой пользовательской плиткой, но в этом случае не будет показан везде. Если это решение жестко запрограммировано. Я пытался создать более одного ICredentialProviderCredential, чтобы у меня был список интерфейсов, но это не сработало.
В документе, представленном здесь, говорится следующее: "• v2 поставщики учетных данных должны реализовывать интерфейс ICredentialProviderCredential2 и возвращать действительный SID в функции GetUserSID. Это сообщает Windows, с какими пользователями должен быть связан поставщик».
Моя проблема в том, как вернуть более одного Sid в функцию GetUserSid. Было бы здорово, если бы вы могли помочь.