2010-05-01 8 views
5

He creado un servicio de Windows que acepta comandos de máquinas remotas a través de WCF. Uno de esos comandos es ejecutar un ejecutable especificado (ignoremos las implicaciones de seguridad de dicha funcionalidad)..NET Process.Start() en un ejecutable en un sistema remoto - ¿advertencia de seguridad?

En mi servicio estoy usando Process.Start() para ejecutar el ejecutable. Todo funciona bien si el archivo ejecutable es local para la máquina, pero si está en un archivo compartido remoto está fallando sin ningún error (o más exactamente solo se cuelga). Sospecho que el problema es que está activando la advertencia estándar de Windows 'Publisher no verificado' que uno vería si hacen doble clic en un exe en un sistema remoto.

¿Hay alguna manera en que pueda omitir esto de mi servicio para que realmente pueda ejecutar cualquier ejecutable? Como dije, entiendo las implicaciones de seguridad de permitir que ejecute cualquier ejecutable, pero esto es realmente lo que necesito. Pensé que esta advertencia solo era un concepto de modo de usuario, pero realmente parece estar obstaculizando mi Servicio.

Ideas?

+0

@BrettRobi: C# no tiene ningún método Process.Start. –

Respuesta

2

Tuve el mismo problema. Y tiene razón acerca de la advertencia 'Publicador no verificado'.

Mi solución fue copiar el EXE localmente en la carpeta% TEMP% y patearlo desde allí. En mi caso, esto fue óptimo porque el EXE no tenía dependencias.

+0

No quería recurrir a esto, pero funciona siempre que no haya dependencias. Parece que no hay otras soluciones, así que gracias angryhacker. – BrettRobi

+3

Después de jugar con esto un poco más descubrí el verdadero problema en mi caso. Necesitaba configurar StartInfo.UseShellExecute = false; Echa un vistazo a esta pregunta: http://stackoverflow.com/questions/2790071/starting-a-process-from-a-net-windows-service/2791053#2791053 – BrettRobi

1

Es posible que desee comprobar los permisos de la cuenta que ejecuta el servicio. Es posible que deba usar una cuenta con más privilegios para ejecutar archivos que no se encuentran en el cuadro. Una manera fácil de probarlo es hacer que el servicio se ejecute bajo una cuenta de administrador. Si funciona, entonces sabrá dónde está el problema.

+0

Estoy ejecutando el servicio en una cuenta con privs de administrador. Gracias por la idea sin embargo. – BrettRobi

0

Quizás deba consultar .net framework Runtime Security Policy y ajustar la configuración de seguridad de la zona.

Cuestiones relacionadas