Pregunta

¿Es posible lanzar un navegador web desde un servicio de Windows? He creado un servicio básico en C # y lo instaló bajo el "sistema local" perfil de seguridad.

El código para las miradas de servicio de la siguiente manera:

namespace Bootloader
{
    public partial class Service1 : ServiceBase
    {
        public Service1()
        {
            InitializeComponent();
        }

        protected override void OnStart(string[] args)
        {
            string target = "http://www.microsoft.com";
            System.Diagnostics.Process.Start(target);
        }

        protected override void OnStop()
        {
        }
    }
}

Cuando se ejecuta el servicio, no pasa nada. La documentación sobre digamos servicio de Windows que no tienen ninguna interfaz de usuario, pero ¿significa eso que el lanzamiento de un navegador de Internet no es posible.

¿Fue útil?

Solución

Es posible sólo en XP e inferior. En Vista, Windows Services se ejecutan en un escritorio independiente por completo. Usted tiene que tener algo que se ejecuta en el escritorio del usuario para lograr esto.

Escribir una aplicación con una ventana oculta que se inicia en el inicio como una solución.

Otros consejos

No creo que esto es posible. Sé que si desea ejecutar Watin (pruebas funcionales que se ejecutan en una instancia del navegador) no se pueden ejecutar desde mi entorno de CI, si esto se ejecuta como un servicio, pero sólo si se ejecuta como una aplicación.

creo que se puede hacer, pero tendrá que hacer trabajo extra con el fin de hacer frente a la modelo de aislamiento de procesos (estaciones de ventana y de escritorio). Echar un vistazo a esta página: Proceso de conexión a una ventana estación . Puesto que no puede modificar el navegador, puede que tenga que escribir una cuña que cambia el contexto y luego invoca el navegador.

Una solución es ejecutar el servicio como un servicio interactivo, pero esto es obsoleto y no funcionarán en las versiones más recientes de Windows.

Los servicios están explícitamente prohibidas de la interacción con el usuario. Desde este Vista se hace cumplir, consulte Servicios Interactivos :

  

Importante: Los servicios pueden no directamente   interactuar con un usuario de Windows como de   Vista. Por lo tanto, las técnicas   mencionado en la sección titulada Uso   un servicio interactivo no debe ser   utilizado en el nuevo código.

La solución es separar la parte inteactive en un proceso normal que se inicia cuando la sesión de usuario inicia (es decir. Un programa de arranque). Este proceso se puede comunicar con el servicio a través de su IPC de elección (memeory compartida, tuberías de red, TCP, etc). El servicio puede dirigir este proceso para iniciar programas cuando sea necesario.

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