2011-07-13 15 views
7

Estoy usando el WNetEnumResource para enumerar todas las conexiones de red compartida y WNetCancelConnection2 para cerrarlas. Luego estoy usando WNetUseConnection para conectarme a un recurso compartido usando credenciales discretas. Este proceso ocurre muchas veces durante el día.Windows API Borrar los tokens de autenticación

El problema que estoy corriendo en es que después de que el primer flujo a través del proceso que estoy recibiendo:

Error del sistema 1219 se ha producido.

No se permiten conexiones múltiples a un servidor o recurso compartido por el mismo usuario, usando más de un nombre de usuario. Desconecte todas las conexiones anteriores al servidor o recurso compartido y vuelva a intentarlo.

Esto ocurre incluso cuando la enumeración dice que no hay conexiones actuales.

Mi pregunta es: ¿por qué? ¿Por qué recibo este error? ¿La conexión autenticada al servidor aún está almacenada? ¿Puedo enumerar estos tokens de autenticación? Kerberos? LSA?

No he podido encontrar el punto de apoyo más pequeño de información para avanzar en este proyecto. ¡Cualquier ayuda es apreciada!

+0

¿Has descubierto cómo solucionar esto? Estoy viendo problemas similares con conexiones de samba anónimas que necesitan 'actualizarse' a un usuario válido al visualizar directorios específicos. – AngerClown

+0

Oh, Dios mío, nos enfrentamos a esto hace unos años ... There * is * a solution. –

Respuesta

2

Estoy tratando de recordar la solución que usamos cuando nos encontramos con este problema para un programa de copia de seguridad de red hace unos años.

Estoy seguro de que la solución implica el uso de WNetAddConnection2 o WNetAddConnection3 en lugar de WNetUseConnection. Creo que pasar la bandera CONNECT_CRED_RESET debería encargarse de esto, pero no estoy absolutamente seguro.

Tenga en cuenta que sólo se CONNECT_CRED_RESET se documenta para WNetAddConnection2 y no WNetAddConnection3, aunque MSDN dice que la única diferencia entre los dos es el parámetro hWnd para el dueño de las ventanas de diálogo - que iba a tratar con WNetAddConnection2 y sólo si funciona, experimentar con WNetAddConnection3 . ¡Incluso puede hacer que funcione con WNetUseConnection!

Asegúrate de note the dependenciesCONNECT_CRED_RESET tiene en otras banderas.

+0

¡Gracias! Voy a intentar esto y volveré. – joshperry

+0

Desafortunadamente, esto no va a funcionar para mí, esos indicadores están destinados a aplicaciones de línea de comandos y realmente solicitan la entrada del usuario. Estoy tratando de terminar una aplicación GUI para usuarios de escritorio para que no haya interacción con la CLI. – joshperry

+1

@joshperry Quería intentar restablecer las conexiones primero con/CONEXIÓN_CRED_RESET y luego establecer la conexión a su manera una vez que desaparezcan los creds. –