Estoy tratando de desarrollar un Credentialprovider v2. Estoy experimentando con el samplecredentialproviderv2 proporcionado por Microsoft. Después de instalar el redistribuible 2013 y compilar para la arquitectura correcta, lo registré y funcionó.
Mi problema es que solo funciona en el primer mosaico de usuario que se muestra. Si enumero más de un mosaico de usuario, se muestra solo en un mosaico de usuario o se convirtió en un error y destruí mi interfaz de usuario de inicio de sesión.
Sé que la pregunta es bastante similar a esta. Aquí puedo decir que probé la solución indicada en el documento de Microsoft mencionado. Hay una función que indica si se muestra el mosaico "otro usuario" y esta función funciona bastante bien. Lo único es que el else if no funcionará, porque si obtienes un mosaico legítimo, getSid no llegará al else if. Entonces, si devuelve en getSid un sid nulo y hr_false, el proveedor de credenciales se muestra en el mosaico del otro usuario, pero en este caso no se muestra en ningún otro lugar. Si esta solución está codificada. Intenté crear más de una ICredentialProviderCredential para tener una lista de interfaces, pero no funcionó.
El documento, que se proporciona aquí , dice lo siguiente: "• Los proveedores de credenciales v2 deben implementar la interfaz ICredentialProviderCredential2 y devolver un SID válido en la función GetUserSID. Esto le dice a Windows con qué usuario(s) debe asociarse el proveedor".
Mi problema es cómo devolver más de un Sid en la función GetUserSid. Sería genial si puedes ayudar.
En ICredentialProvider::GetCredentialCount(), devuelve la cantidad de mosaicos de credenciales (uno por usuario) que proporcionará su proveedor de credenciales (el proveedor de credenciales puede saber cuántos usuarios "hay" de la matriz de usuarios proporcionada a SetUserArray() ). Devuelva una instancia diferente de ICredentialProviderCredential2 en respuesta a cada inicio de sesión de llamada que realice a su ICredentialProvider::GetCredentialAt(), y de cada una de estas instancias devuelva un SID diferente en respuesta a GetUserSID(). Cada una de sus credenciales debe asociarse con un usuario diferente al iniciar sesión.