Tengo una pequeña aplicación de C# que necesita verificar periódicamente el contenido de los directorios en varias máquinas de la red. Pensé que podría simplemente leer \ hostname \ C $ como una ruta de directorio, pero con la clase de directorio normal no parece haber una manera de autenticarse contra los otros servidores para que pueda acceder al recurso compartido oculto. Estoy seguro de que hay una forma fácil de hacer esto que he pasado por alto, pero por el momento estoy un poco atontado.Lectura de cuota oculta en C#
Respuesta
De http://bytes.com/forum/thread689145.html:
Todos los procesos se ejecutan en el contexto de una cuenta de usuario que ha iniciado sesión en . Si desea abrir un archivo en otra computadora, su aplicación debe ejecutarse en el contexto de un usuario que tenga permisos para abrir archivos en esa máquina. Puede hacer esto con suplantación.
La manera más fácil parece ser dar al usuario actual los derechos apropiados en las otras máquinas.
Este es también el mejor enfoque, ya que eliminará la necesidad de lidiar con la autenticación en su software (que es fácil equivocarse). – Luke
¿Está buscando una forma de configurar al usuario actual en tiempo de ejecución?
Si no es así, siempre y cuando el usuario que ejecuta el proceso tiene acceso a esas máquinas, esto va a funcionar para usted:
DirectoryInfo di = new DirectoryInfo(@"\\machineName\c$\temp");
FileInfo[] files = di.GetFiles();
foreach (FileInfo f in files)
{
Debug.WriteLine(f.Name);
}
para autenticar con una cuota a la que el usuario que ejecuta el proceso no tiene permiso (que es a menudo el caso de las acciones administrativas), intente ejecutar el comando net use:
net use SERVERNAME\IPC$ /user:USERNAME PASSWORD
intente ejecutar esto en un proceso separado antes del código que en realidad intenta acceder al recurso compartido, por ejemplo:
ProcessStartInfo psi = new ProcessStartInfo(
"net", "use " + SERVERNAME + @"\IPC$ /user:" + USERNAME + " " + PASSWORD);
Process p = new Process();
p.StartInfo = psi;
p.Start();
p.WaitForExit();
p.Close();
// The code to access the share follows...
Esto es útil si no es apropiado dar permiso al recurso compartido para la cuenta de usuario que ejecuta el proceso, p. para un modelo de seguridad donde una aplicación del usuario final necesita acceder a los datos en un recurso compartido al que la usuaria no debería tener acceso directo.
- 1. Comprobador de cuota de almacenamiento de correo en C#
- 2. C# clase base privada (oculta)
- 3. Cómo crear una ventana oculta en C++
- 4. C#: ¿Cómo iniciar sesión en una cuota al utilizar DirectoryInfo
- 5. Lectura de PDF en C#
- 6. Lectura de gml en C#
- 7. C++ Función virtual que se oculta
- 8. cabecera ELF lectura en C
- 9. Lectura de datos de DataGridView en C#
- 10. git gc en la máquina con cuota
- 11. HardDisk Cuota - Cedar Pila (Heroku)
- 12. C# UTF8 Lectura/Salida
- 13. Solo lectura de matriz bidimensional en C#
- 14. Lectura de resultados popen en C++
- 15. Lectura de archivos delimitados en C++
- 16. Lectura y escritura de XML en C#
- 17. Lectura de documentos compuestos en C#
- 18. lectura/escritura de archivos bmp en c
- 19. Lectura de archivos CSV en C#
- 20. de sólo lectura lista en C#
- 21. Lectura programática de archivos PDF en C#
- 22. "sólo lectura" propiedad de acceso en C#
- 23. Establecer cuota de base de MongoDB (SIZE)
- 24. límites de cuota de Android Geocoder
- 25. lectura C archivos binarios
- 26. C fundición de estilo y facilidad de lectura en C++
- 27. Lectura de un archivo de imagen en C/C++
- 28. intención cuota de éxito para android
- 29. La cuota máxima longitud de la matriz (16384) se ha superado durante la lectura de datos XML
- 30. Excepción de cuota máxima de longitud de matriz en WCF
Esto debería funcionar. ¿Cuál es la excepción que estás recibiendo? –