¿Cómo poner en marcha un programa de interfaz gráfica de usuario en un servicio de Windows?

StackOverflow https://stackoverflow.com/questions/948417

  •  09-09-2019
  •  | 
  •  

Pregunta

Al ejecutar un servicio que cuenta LocalSystem, puedo usar siguientes códigos para poner en marcha un programa de interfaz gráfica de usuario con la cuenta de inicio de sesión actual:

WTSGetActiveConsoleSessionId-> WTSQueryUserToken-> CreateProcessAsUser

Sin embargo, cuando ejecuto el servicio como mi cuenta personal, el programa de interfaz gráfica de usuario no se mostrará. Lo puedo ver en el administrador de tareas sin embargo.

¿Qué debo hacer para poner en marcha el programa de interfaz gráfica de usuario cuando el servicio se está ejecutando en mi cuenta personal?

¿Fue útil?

Solución

John y jdigital los dos tienen razón -. Desde mi entender, los servicios en general, pueden tener acceso desde el escritorio o bien (hay que utilizar localsystem) o el acceso a la red (es necesario especificar una cuenta para ejecutarse bajo)

Se necesitan dos dividir su aplicación en dos - una para interactuar con el escritorio y el otro para hablar sobre la red. Las dos partes pueden hablar unos con otros para transmitir información al usuario final.

Otros consejos

Todo tiene que ver con permisos creo.

LocalSystem tiene suficientes privilegios para suplantar al usuario actual, pero su cuenta no lo hace.

Usted tendría que encontrar una manera de extender permisos a su servicio, ya sea por pedir las credenciales, o conectarse a un servicio de ayuda que se ejecuta como LocalSystem.

(¿Por qué quiere correr con su cuenta en lugar de LocalSystem?)

Estoy seguro de que hay mucho más a fondo las respuestas que tienen que ver con el de en y de salir de hacer esto, pero a un alto nivel Creo que este es el problema.

Es posible que se ejecuta en la estación de ventana equivocada o de escritorio. Ver este referencia Microsoft en estaciones de ventana y de escritorio .

Creo que lo que está tratando de hacer que puede considerarse una vulnerabilidad de seguridad. Tampoco es probable que funcione en algunos casos también. Creo jdigital es correcta, ya que tiene que ver con las estaciones de ventana y tratando de conseguir el acceso a la estación de ventana de usuario actual y es de escritorio. Esto se confunde mucho cuando se está bajo en una pasarela de servicios de terminal en el que hay varias estaciones de la ventana actual. Microsoft realmente no te quiere lo que quiere y lo hacen más difícil con cada lanzamiento de Windows.

Creo que la mejor opción es resolver el problema desde otro ángulo y simplemente crear una aplicación de interfaz gráfica de usuario que el usuario ejecute (manaully o automáticamente al iniciar la sesión) y se refiere a su servicio.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top