Duplicar posibles:
Accessing Password Protected Network Drives in Windows in C#?Cómo suplantar a un usuario una copia de archivos a través de la red cuando DNS o NetBIOS no está disponible
tengo EquipoA en DominioA funcionando como userA necesidad de copie un archivo muy grande a ComputerB en WorkgroupB que tiene la ip de 192.168.10.2 en un recurso compartido de Windows al que solo el usuario B tiene acceso de escritura.
No hay NetBIOS o traducción DNS por lo que el equipo debe estar refrenced por IP
La primera vez que intenté
AppDomain.CurrentDomain.SetPrincipalPolicy(System.Security.Principal.PrincipalPolicy.WindowsPrincipal);
WindowsIdentity UserB = new WindowsIdentity("192.168.10.2\\UserB", "PasswordB"); //Execption
WindowsImpersonationContext contex = UserB.Impersonate()
File.Copy(@"d:\bigfile", @"\\192.168.10.2\bifgile");
contex.Undo();
pero me da un System.Security.SecurityException
"El nombre proporcionado no es un nombre de cuenta adecuadamente formado "
así que traté
AppDomain.CurrentDomain.SetPrincipalPolicy(System.Security.Principal.PrincipalPolicy.WindowsPrincipal);
WindowsIdentity webinfinty = new WindowsIdentity("ComputerB\\UserB", "PasswordB"); //Execption
pero me da "Error de inicio: nombre de usuario desconocido o contraseña incorrecta." error en su lugar.
por lo que entonces me trataron
IntPtr token;
bool succeded = LogonUser("UserB", "192.168.10.2", "PasswordB", LogonTypes.Network, LogonProviders.Default, out token);
if (!succeded)
{
throw new Win32Exception(Marshal.GetLastWin32Error());
}
WindowsImpersonationContext contex = WindowsIdentity.Impersonate(token);
(...)
[DllImport("advapi32.dll", SetLastError = true)]
static extern bool LogonUser(
string principal,
string authority,
string password,
LogonTypes logonType,
LogonProviders logonProvider,
out IntPtr token);
pero LogonUser
retornos falsos con el error Win32 "Error de inicio: nombre de usuario desconocido o contraseña incorrecta"
Sé que mi nombre de usuario y la contraseña están bien, que han iniciado sesión en el equipo B como ese usuario.
Cualquier reccomandations
Parece que mi tercera forma (muy cerca de lo que hizo) es la correcta. Usando tu código funcionó bien. –
Si bien este enlace puede responder a la pregunta, es mejor incluir las partes esenciales de la respuesta aquí y proporcionar el enlace de referencia. Las respuestas de solo enlace pueden dejar de ser válidas si la página vinculada cambia. – ProgramFOX
¡Eres mi héroe! Trabajé en este problema durante tanto tiempo y con muchos enfoques diferentes. Ninguno funcionó con IP. ¡ESTUPENDO! Gracias. – Daniel