¿Cómo especifico el nombre de usuario y la contraseña para que mi programa abra un archivo para leer? El programa que necesita acceder al archivo se ejecuta desde una cuenta que no tiene acceso de lectura a la carpeta donde está el archivo. El programa está escrito en C# y .NET 2, ejecutándose bajo XP y el archivo está en un servidor de Windows Máquina 2003¿Cómo presentar las credenciales para abrir el archivo?
Respuesta
Puede suplantar a un usuario que tenga los derechos necesarios. Hay un article on MSDN que describe cómo hacer esto.
Desea suplantar a un usuario que tiene los derechos para acceder al archivo.
Recomiendo usar una clase como esta - http://www.codeproject.com/KB/cs/zetaimpersonator.aspx. Oculta toda la desagradable implementación de hacer suplantación.
using (new Impersonator("myUsername", "myDomainname", "myPassword"))
{
string fileText = File.ReadAllText("c:\test.txt");
Console.WriteLine(fileText);
}
He utilizado el paquete Nuget NuGet Gallery | Simple Impersonation Library 1.1.0 pero hay otros; búsqueda de Suplantación para los demás.
Ejemplo de uso mediante el inicio de sesión interactivo para trabajar con estructuras de archivos:
using (Impersonation.LogonUser("{domain}",
"{UserName}",
"{Password}",
LogonType.Interactive))
{
var directory = @"\\MyCorpServer.net\alpha\cars";
Assert.IsTrue(Directory.Exists(directory));
}
respuesta de James abajo era antes Nuget y antes de que más tarde tendría el paquete más descargado en Nuget. Irónico, ¿eh?
Simple, muchas gracias! –
- 1. ¿Cómo cambiar las credenciales para el repositorio SVN en Eclipse?
- 2. Cómo abrir el archivo .hprof
- 3. Cómo iniciar el navegador para abrir el archivo local
- 4. pitón cómo anexar a presentar en el archivo zip
- 5. guardar cadena para presentar
- 6. ¿cómo PRECOMPILE plantillas ejs para presentar
- 7. byte [] para presentar en Java
- 8. Cómo utilizar el diálogo Abrir archivo para seleccionar una carpeta
- 9. ¿Cómo presentar las características de las funciones agregadas (NULL)?
- 10. Cómo especificar las credenciales de Windows en el archivo de configuración del cliente WCF
- 11. ¿Cómo obtener las credenciales API de paypal?
- 12. ¿Cómo gestiona su empresa las credenciales?
- 13. ¿Cómo validar las credenciales smtp antes de enviar el correo?
- 14. Borrar las credenciales de UIWebView
- 15. ¿Cómo abrir el archivo de extensión .msu?
- 16. ¿Cómo guardo y recupero las credenciales del administrador de credenciales de Windows Vault?
- 17. ¿Cómo paso las credenciales a una máquina para que pueda usar Microsoft.Win32.RegistryKey.OpenRemoteBaseKey() en él?
- 18. Abrir el archivo en el modo Agregar: usando abrir() API
- 19. Git: eliminar las credenciales del repositorio
- 20. ¿Cómo abrir un archivo "nul"?
- 21. Abrir el explorador en un archivo
- 22. ¿Cómo pasar las credenciales en la configuración de configuración defaultProxy?
- 23. CTRL + S para presentar la forma y todas las entradas
- 24. Cómo abrir un archivo .a
- 25. Symfony2 http_basic de seguridad rechaza las credenciales válidas
- 26. ¿Cómo presentar mejor las pruebas unitarias a la administración?
- 27. Powershell para comprobar las credenciales de administrador local
- 28. copiar el archivo al equipo remoto usando las credenciales de administración remota
- 29. Abrir el archivo de sólo lectura
- 30. QFile abrir archivo para escritura falla
Esto funciona genial. Descubrí que las rutas de archivos deben estar en formato UNC si están ubicadas en otra máquina. –
Funciona para mí también, me llevó un tiempo hacerlo funcionar porque me perdí la observación hecha en la página referenciada: _Tenga en cuenta: El contexto del usuario que inicia la suplantación (es decir, no el contexto del usuario al que se cambia) necesita tiene el conjunto de privilegios "Actuar como parte del sistema operativo". –
Es una pena que el autor del proyecto de código nunca lo haya movido a Nuget. El comentario de mi respuesta fue solo para divertirme; porque se entiende que respondiste esto hace 8 años antes que Nuget. – OmegaMan