2009-12-16 13 views
10

He escrito un servicio que un sitio web puede ejecutar un comando de forma remota utilizando el método ExecuteCommand. Me he dado cuenta de que si el sitio web no se ejecuta con un usuario administrador en el equipo remoto, entonces obtengo una excepción de permiso denegado al intentar ejecutar el comando.permisos de servicecontroller

La clase servicecontroller ni siquiera le permite especificar ningún parámetro de autenticación. ¿Es esto correcto? ¿Existe un conjunto específico de privilegios que el usuario necesita en lugar de un administrador, ya que soy reacio a agregar todos los usuarios de los servidores web en nuestro clúster como administradores locales en la máquina de servicio?

Respuesta

5

Deberá suplantar temporalmente a un usuario administrador por el hilo actual y luego volverlo atrás. Busque WindowsIdentity.Impersonate() en MSDN.

ServiceController utilizará el principal del subproceso actual para realizar las llamadas del registro y del administrador de control de servicio y debe asegurarse de que esté configurado para un usuario administrador si desea manipular los servicios. La desventaja es que tendrá que guardar la contraseña en algún lugar de la cuenta, asegúrese de estar usando SecureString y no almacene la contraseña en texto sin formato.

+0

Si es posible, sugeriría que el usuario ingrese su contraseña de administrador cada vez que ejecuta el comando. De esa forma evitas almacenarlo. Sin embargo, esto puede no ser factible en su caso. – John