20 votos

Programa de inicio en el arranque de la computadora cuando no hay nadie conectado y mostrar la ventana cuando alguien hace log (OS: Windows)

Tengo un programa que se inicia en el arranque del sistema utilizando el Programador de Tareas en Windows Server 2012. El programa debe comenzar incluso si el equipo se reinicia automatially.

Administrador de la cuenta utilizada para iniciar el programa, la opción de "Ejecutar si el usuario está conectado o no" está activada para la tarea.

El problema con esto es que cuando alguien finalmente, inicie sesión como Administrador usando el Escritorio Remoto Conexión de la interfaz (la ventana del programa) está oculto.

Como entiendo que no hay manera de solucionar esto usando el Programador de Tareas.

¿Cómo puedo solucionar esto?

Debe ser un problema bastante común, pero no he encontrado nada buscando en la red. Estoy bastante sorprendido de que Microsoft permitir este tipo de limitación en su programador. Puedo hacer un VBScript o algo que se ejecuta en el inicio y se inicia el programa, que luego serán visibles cuando el usuario inicia realmente?

Otras ideas?

(No quiero tener que hacer una interfaz gráfica de usuario-único programa que se conecta al programa original por el camino. También prefiero que si no tengo que terminar el ya-se ejecuta el programa de usuario de inicio de sesión y, a continuación, inicie de nuevo.)

17voto

TomTom Puntos 38586

Tengo un programa que se inicia en el arranque del sistema utilizando el Programador de Tareas en Windows Server 2012. El programa debe comenzar incluso si el equipo se reinicia automatially.

Entonces ¿por qué no hacer un servicio del sistema, como el windows especificaciones de definir?

¿Cómo puedo solucionar esto?

Usted no puede. Los programas en segundo plano no se supone que para interactuar con la interfaz de usuario. O: la interfaz de usuario debe ejecutar un programa propio que luego se conecta con el servicio. La interfaz de usuario que se ejecuta en el espacio de usuario del usuario que hace la presentación, el servicio de windows realiza el procesamiento. Esta es la forma en que el modelo es diseñado para tal vez 15 años o así.

Estoy bastante sorprendido de que Microsoft permitir este tipo de limitación en su programador.

Estoy más sorprendido que nunca botthered a preguntar por qué.

Hay varios problemas:

  • Cuando varias personas se registran en que se presenta la interfaz de usuario?
  • Cuando el usuario cierra la sesión, se elimina el programa? OUCH.
  • De seguridad. El programa en segundo plano se pueden ejecutar con derechos limitados exposición de la interfaz de usuario para el usuario significa que el usuario puede ejecutar código no. La mensajería de windows del modelo de es - ah - lleno de problemas.

No quiero tener que hacer una interfaz gráfica de usuario-único programa que se conecta a la original programa por el camino.

Ni de mí, ni a Microsoft le importa en este momento lo que te gusta hacer. Hay un sistema establecido y apoyado modelo para atar el procesamiento en segundo plano en una sesión en la interfaz de usuario de uso, o no. Pero cuando no, no compllain acerca de los problemas de seguridad que ponga para arriba.

3voto

Marcus Puntos 117

Descubierto cómo hacerlo yo mismo. Es algo de una solución, pero eso es lo que yo esperaba obtener.

Stop! No se estremece todavía. Sigue leyendo...

  • Ejecutar, establecer, de modo que el Administrador debe iniciar sesión automáticamente.

  • Crear una tarea en el Programador de Tareas. Configurarlo para que se ejecute sólo cuando el usuario (Administrador) está conectado. Trigger es "iniciar sesión" y especificar que es sólo cuando un Administrador inicia sesión.

  • Crear una segunda tarea. Se ejecuta sólo cuando el usuario está conectado, el gatillo en el registro administrativo. La acción debe ser "iniciar un programa" y el programa "C:\Windows\System32\rundll32.exe" con el argumento de campo "user32.dll, LockWorkStation".

Lo que ocurre ahora, si usted reinicie el equipo es que el Administrador de la sesión automáticamente, el programa que desea iniciar se inicia y la estación de trabajo, queda bloqueado. Si me conecto a través de la Conexión a Escritorio Remoto puedo ver la ventana del programa y el uso de la interfaz gráfica de usuario. Puedo bloquear/desbloquear el equipo con ningún problema y desconectar/reconectar como yo por favor. No hay ningún problema si me voy para el servidor de registro y en el real de la estación de trabajo. Desde el Administrador ya está firmado en la tarea no se ejecutará de nuevo (no crear algunas de registro infinito-en-bloqueo de bucle que no se puede romper).

Simple como eso. Por supuesto no es de un segundo período de tiempo antes de que el equipo se bloquea después de que el auto de inicio de sesión y supongo que un pro hacker con acceso físico a la computadora podría hacer algo furtivo durante esta ventana de tiempo, pero en mi caso puedo pasar por alto que el riesgo de seguridad. Mientras yo no deje que cualquier pro hackers en mi casa y mostrarles el equipo el sistema debe ser relativamente seguro. Por encima de todo no hay mucho de valor en el equipo que necesita super-bóveda de protección, así que estoy bastante contento con esta solución.

0voto

BigHomie Puntos 3983

Es todo acerca de la Session de que su programa se ejecuta en. Si no hay nadie conectado, no hay ninguna sesión interactiva para mostrar bajo, creo que se ejecuta bajo Session 0, que tiene un extraño interfaz de usuario que no se muestra como los demás.

Ahora, si el programa detecta cuando explorer.exe lanza (o alguna otra forma de detectar el inicio de sesión de usuario) y por arte de magia remorphed sí mismo o generado algunos de los niños el proceso en el que las nuevas sessionid, entonces cualquier persona que se registra en estará feliz de ver lo que estás haciendo.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: