Foros del Web » Programación para mayores de 30 ;) » .NET »

Solicita credenciales al copiar en red archivos

Estas en el tema de Solicita credenciales al copiar en red archivos en el foro de .NET en Foros del Web. Buen dia a todos! tengo una pequeña consulta, yo copio imagenes de un computador a otro de esta manera : @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código c#: Ver ...
  #1 (permalink)  
Antiguo 26/01/2011, 07:50
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 13 años, 10 meses
Puntos: 267
Pregunta Solicita credenciales al copiar en red archivos

Buen dia a todos! tengo una pequeña consulta, yo copio imagenes de un computador a otro de esta manera :

Código c#:
Ver original
  1. System.IO.File.Copy(ruta_origen, ruta_destino, false);

Ahora mi problema eh aqui, como hago para mandar las credenciales(usuario y password) porque al querer copiar me pide estos requisitos, porque sino no los copia. Cabe aclarar que la carpeta es compartida en red y tienen permisos "TODOS" pero aun asi pide la identificacion, espero puedan resolver mi duda. Les agradesco de antemano la atencion prestada. Saludos!.
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net
  #2 (permalink)  
Antiguo 27/01/2011, 06:20
Avatar de moNTeZIon  
Fecha de Ingreso: enero-2005
Ubicación: Lliçà de Munt - BCN
Mensajes: 1.625
Antigüedad: 19 años, 3 meses
Puntos: 9
Respuesta: Solicita credenciales al copiar en red archivos

En principio debería realizarse la copia bajo el usuario con el que has iniciado sesión en windows.
Por lo tanto, si el usuario puede copiar el archivo, tu programa debería poder realiza la copia, ya que debería realizarla en nombre del usuario que haya iniciado sesión.
Otra cosa es que se hablara de una aplicación ASP.NEt, en tal caso supongo que la copia se realizaría bajo el usuario ASP.NET y en tal caso, éste debería tener permisos para realizar la copia.
Y si no, usar impersonation.
Saludos.
__________________
..:: moNTeZIon ::..
  #3 (permalink)  
Antiguo 27/01/2011, 07:25
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 13 años, 10 meses
Puntos: 267
Respuesta: Solicita credenciales al copiar en red archivos

Hola montesion! gracias por tu respuesta pues si antes que me respondieras estaba usando impersonation pero mencionar que tengo unos problemas al momento de usar lo necesario de esa clase.Los archivos que subo son hacia un servidor y este pide usuario y password para tener acceso al copiado, logicamente le quiero pasar estas credenciales por codigo.Mi aplicacion es desktop y no asp.net. Adjunto mi codigo del impersonation que estoy usando:

Esto va dentro del evento click del un boton llamado subir :
Código c#:
Ver original
  1. IntPtr tokenHandle = new IntPtr(0);
  2. IntPtr dupeTokenHandle = new IntPtr(0);
  3.  
  4. const int LOGON32_PROVIDER_DEFAULT = 0;
  5. //This parameter causes LogonUser to create a primary token.
  6. const int LOGON32_LOGON_INTERACTIVE = 2;
  7. const int SecurityImpersonation = 2;
  8.  
  9. tokenHandle = IntPtr.Zero;
  10. dupeTokenHandle = IntPtr.Zero;
  11.  
  12. //MANDO EL USUARIO; EL SERVIDOR Y LA CLAVE
  13. bool returnValue = LogonUser("Administrador", @"\\200.31.122.59\", "xxx", LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT,
  14. ref tokenHandle);
  15.  
  16. if (false == returnValue)
  17. {
  18. int ret = Marshal.GetLastWin32Error();
  19. Console.WriteLine("LogonUser failed with error code : {0}", ret);
  20. Console.WriteLine("\nError: [{0}] {1}\n", ret);
  21. int errorCode = 0x5; //ERROR_ACCESS_DENIED
  22. throw new System.ComponentModel.Win32Exception(errorCode);
  23. }
  24.  
  25. bool retVal = DuplicateToken(tokenHandle, SecurityImpersonation, ref dupeTokenHandle);
  26. if (false == retVal)
  27. {
  28. CloseHandle(tokenHandle);
  29. Console.WriteLine("Exception thrown in trying to duplicate token.");
  30. //SIEMPRE LLEGA A ESTE RETURN Y NO HACE NADA Y CUANDO
  31. //COMENTO ESTE RETURN ME BOTA QUE EL TOKENHANDLE NO
  32. // PUEDE SER CERO
  33. return;
  34. }
  35.  
  36. WindowsIdentity newId = new WindowsIdentity(dupeTokenHandle);
  37. WindowsImpersonationContext impersonatedUser = newId.Impersonate();
  38.  
  39. MessageBox.Show(WindowsIdentity.GetCurrent().Name);
  40. //AQUI MANDO A COPIAR AL SERVIDOR
  41. System.IO.File.Copy(ruta_origen, ruta_destino, false);
  42.  
  43. MessageBox.Show("Foto cargada correctamente", "GRYPHOS", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
  44.  
  45.  
  46. // Stop impersonating the user.
  47. impersonatedUser.Undo();
  48.  
  49. // Free the tokens.
  50. if (tokenHandle != IntPtr.Zero)
  51. CloseHandle(tokenHandle);
  52. if (dupeTokenHandle != IntPtr.Zero)
  53. CloseHandle(dupeTokenHandle);

Que puedo estar haciendo mal?. Saludos!
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net

Última edición por Aquaventus; 27/01/2011 a las 08:02

Etiquetas: copiar, credenciales, red
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:05.