2010-02-18 4 views
6

Usando C# WMI Comienzo un exe en otra computadora y este exe inicia otro exe usando la clase C# Process. El último exe intenta llamar al Directory.CreateDirectory usando una ruta de red (también conocida como \\\\comp1\d$\dir\). Directory.CreateDirectory lanza esta excepción:C# WMI ejecuta un exe en una PC remota que luego ejecuta otro exe en la misma PC que luego llama a Directory.CreateDirectory en una ruta de red y falla

Access to the path '\\\\blah\blah\blah' is denied. at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) 
    at System.IO.Directory.InternalCreateDirectory(String fullPath, String path, DirectorySecurity dirSecurity) 
    at System.IO.Directory.CreateDirectory(String path, DirectorySecurity directorySecurity) 

Si corro el tercer exe directamente en una consola en el equipo que existe en esta excepción no se lanza y todo funciona bien.

La configuración de seguridad para la carpeta donde se está creando el directorio tiene "Todos" con todos los permisos.

¿Cómo puedo solucionar este problema?

+2

¿Se aseguró de que la configuración de seguridad de la carpeta de red compartida le permita leer/escribir privilegios? – Aaron

+0

Por lo que puedo decir ... – jestro

+0

alguna solución al respecto? – Kiquenet

Respuesta

1

Como se dijo Aaron, ventanas de seguridad acción tiene dos componentes La primera es la seguridad de la propia acción. El segundo es la seguridad en los archivos y carpetas en ese recurso compartido.

Ambos tienen que permitir el acceso al directorio de creación para que esto funcione.

También debe saber que el grupo TODOS incluye cuentas de equipo de dominio, cuenta de sistema integrada, usuarios de dominio, invitados y usuarios autenticados.

Esto significa que lo primero que debe hacer es ver en qué usuario se está ejecutando. Si se está ejecutando bajo la cuenta de la máquina Y no es parte de un dominio, deberá otorgarle acceso a esa cuenta de la máquina al sistema de archivos compartidos.

2

También tenga en cuenta que al iniciar una aplicación a través de WMI, hay una tercera capa de derechos. Por ejemplo, si invoca un método en un objeto WMI existente, no puede delegar los derechos de las personas que llaman, o incluso los derechos del servidor principal, pero tendrá un Principal vacío. Esto puede estar sucediendo a usted.

Vaya a Administración de equipos, y en Servicios y aplicaciones, haga clic con el botón derecho en el nodo Control de WMI y seleccione Propiedades. Vaya a la pestaña Seguridad, y luego navegue hasta el espacio de nombres WMI correcto (lo más probable es que sea root \ CIMV2) y asegúrese de que el usuario que está utilizando también tenga los derechos adecuados.

+0

Si agregué a todos a root \ CIMV2 y le di permisos completos, ¿sería suficiente? – jestro

+1

Posiblemente. No estoy exactamente seguro de lo que está pasando aquí. Solo quería hacerte consciente de que cuando realizas una acción lanzada a través de WMI, en realidad tienes que lidiar con un tercer conjunto de permisos. – Nick

+0

Derecha, gracias por el aviso. Es una situación dolorosa, seguro. – jestro

Cuestiones relacionadas