This .NET API funciona bien si intento abrir el Registro en una máquina que está en el mismo dominio que yo (y el usuario que inició la sesión tiene derechos de administrador en la máquina de destino).¿Cómo paso las credenciales a una máquina para que pueda usar Microsoft.Win32.RegistryKey.OpenRemoteBaseKey() en él?
Se vuelve complicado si se trata de una máquina fuera de dominio con un usuario administrativo local diferente (del que tengo la contraseña).
He intentado usar WNetUseConnection() (que me ha servido bien en el pasado en situaciones donde lo que quería era leer un archivo de disco remoto) antes de llamar a OpenRemoteBaseKey(), pero no hay dados - Obtengo una excepción de acceso denegado .
Claramente, debo pasar las credenciales de otra manera, pero ¿cómo?
+1 Esta es realmente la única forma de hacerlo. – Nate
¿Podría mantener la variable "token" durante un tiempo prolongado y luego usar el bloque "using/Undo()" en varios puntos de domesticación utilizando el mismo token? " – JCCyC
Creo que sí. Es el Impersonate el que realmente inicia sesión. Lo que he usado es un "GetImpersonation()" que devuelve un WindowsImpersonationContext como el de arriba –