Mi programa requiere acceso a una determinada ruta UNC, pero la ruta es de dominio cruzado, por lo que dependiendo de la máquina en la que se ejecute el programa, puede o no tener credenciales predeterminadas. Normalmente, un usuario debería simplemente abrir el explorador y escribir la dirección UNC o IP para obtener un mensaje de inicio de sesión (en este punto pueden escribir las credenciales apropiadas para el dominio en el que está el recurso compartido).Prueba de "Accesibilidad" de una ruta UNC
¿Existe alguna manera "limpia" de probar el acceso de UNC, y si las credenciales predeterminadas de Windows son malas, solicítelas para obtener otras diferentes?
Ahora estoy usando un código desagradable para tratar de leer un archivo de texto en el recurso compartido, atrapar una IOException, y luego abrir un objeto de proceso "explorer.exe" (oculto) para obtener la solicitud de inicio de sesión. Todo esto está contenido dentro de un bucle que vuelve a verificar después de 10 s. Funciona de cierta manera, pero la solución y la lógica parecen realmente indeseables.
¿Son mis únicas opciones realmente WNetUseConnection o una solución de estilo interoperativo?
No siempre es el caso que las pruebas preventivas * no tienen sentido *. A veces, las pruebas con anticipación pueden ser una ganancia de rendimiento, por ejemplo. Es decir, podría ser más barato preguntar "oye, ¿es muy probable que arrojes una excepción?" de lo que es intentarlo y esperar la excepción. Esto es particularmente cierto en procesos largos de varios pasos en los que todo podría fallar en el último paso. Descubrir con anticipación si el último paso casi seguramente va a fallar puede ahorrarle el trabajo de llegar allí. Pero dicho eso, sí, vas a tener que manejar el caso de falla independientemente. –
Sí ... 'sin sentido' probablemente no sea la mejor frase. Si usted ya sabe que el archivo no existe/no se puede acceder desde el principio, es posible que desee simplemente pagar fianza en lugar de hacer un montón de trabajo que seguramente no servirá de nada. –
Supongo que mi única preocupación es que hay una gran cantidad de gastos generales en mi programa (consultas SQL, interacción del usuario, etc.) antes de que los archivos se escriban en un recurso compartido, y cuando mi programa escribe en un recurso compartido es un proceso bastante intenso (es decir, archivos zip grandes). Esto podría llevar a 5-10m de tiempo "desperdiciado" por parte del usuario si no tienen acceso correcto a la UNC.Estoy, por supuesto, envolviendo cosas en try/catch para IOExceptions, solo rezo para que el usuario sepa a qué se refieren (heh). Gracias por la respuesta útil. – Jai