permisos del controlador de servicio

He escrito un servicio en el que un sitio web puede ejecutar un comando de forma remota utilizando el método ExecuteCommand. He notado que si el sitio web no se está ejecutando bajo un usuario que es un administrador en la máquina remota, obtengo una excepción de permiso denegado al intentar ejecutar el comando.

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

Tendrá que hacerse pasar por un usuario administrador para el subproceso actual temporalmente y luego volver. Busque WindowsIdentity.Impersonate () en MSDN.

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