Acceso al escritorio de aplicación desde un servicio

Seleccione idioma Seleccione idioma
Id. de artículo: 115825 - Ver los productos a los que se aplica este artículo
Este artículo se ha archivado. Se ofrece "tal cual" y no se volverá a actualizar.
Expandir todo | Contraer todo

Resumen

En Windows NT, versión 3.1, si desea que un servicio para tener acceso al escritorio de aplicación, debe ejecutar el servicio en la cuenta LocalSystem. Un proceso de servicio que se ejecuta en la cuenta LocalSystem (o un proceso iniciado desde dicho servicio) puede mostrar cuadros de mensaje, ventanas y cuadros de diálogo. Procesos que se ejecutan en la cuenta LocalSystem no terminan por el sistema durante el cierre de sesión. Un número de cambios se realizaron en Windows NT, versión 3.5, que afectan al modo que Windows interactúa con estos servicios. Además, Windows NT 3.51 tiene un conjunto más rico de API de escritorio.

Nota: Ejecutar servicios interactivos bajo la cuenta de sistema es una muy práctica peligrosa. Esto es especialmente cierto los procesador de comandos y archivos de proceso por lotes. Un usuario que desea controlar el sistema sólo puede ha alcanzado CTRL+C para obtener un símbolo del sistema interactivo.

Más información

Los siguientes son nuevas características de Windows NT, versión 3.5, que afectan a servicios:
  • La cuenta del usuario ha iniciado la sesión es la única cuenta acceso al aplicación de escritorio. LocalSystem ya no tiene acceso. Por lo tanto, es posible obtener acceso al escritorio mediante la suplantación del usuario antes de hacer que cualquier usuario o GDI llama a.
  • Las aplicaciones de consola y GUI iniciadas desde un proceso de servicio durante un inicio de sesión determinado se ejecutan en una estación de ventana invisible y el escritorio que son únicas para esa sesión. La estación de ventana y escritorio se crean automáticamente cuando se inicia la primera aplicación en la sesión; destruyen cuando sale de la última aplicación. No hay ninguna forma para que estos escritorios invisibles sea visible.
  • Si desea un servicio en la cuenta localsystem para interactuar con el usuario ha iniciado la sesión, especifique el indicador SERVICE_INTERACTIVE_PROCESS en la llamada a CreateService(). Por ejemplo:
          schService = CreateService(
             schSCManager,
             serviceName,
             serviceName,
             SERVICE_ALL_ACCESS,
             SERVICE_INTERACTIVE_PROCESS | SERVICE_WIN32_OWN_PROCESS,
             SERVICE_DEMAND_START,
             SERVICE_ERROR_NORMAL,
             lpszBinaryPathName,
             NULL,
             NULL,
             NULL,
             NULL,
             NULL );
    						
    si especifica una cuenta distinta de localsystem cuando se utiliza SERVICE_INTERACTIVE_PROCESS, obtendrá el error INVALID_PARAMETER (87).
  • Si utilizar CreateProcess() para iniciar el proceso y desea que su servicio para iniciar sesión en el escritorio de usuarios, asignar el parámetro lpdesktop de la estructura STARTUPINFO con "WinSta0\\Default".
  • Servicios que necesite una notificación de usuario visible ello pueden llamar a MessageBox() con el indicador MB_SERVICE_NOTIFICATION. Mediante el indicador MB_DEFAULT_DESKTOP_ONLY funciona tan bien, pero sólo si el escritorio del usuario activo. Si la estación de trabajo está bloqueado o se está ejecutando un protector de pantalla, la llamada se perderá.

    Nota: Si está escribiendo código para una aplicación puede ejecutarse como un servicio o un archivo ejecutable, puedes utilizar MB_SERVICE_NOTIFICATION, así como un hwndOwner distinto de NULL.
  • Cualquier resultado realizado para una ventana no se muestra o están disponible a la aplicación en modo alguno. Intenta leer bits de los resultados de presentación en un error.
  • Servicios de GUI no reciben mensajes mensaje WM_QUERYENDSESSION/WM_ENDSESSION en cierre de sesión y apagado: en su lugar, reciben eventos CTRL_LOGOFF_EVENT y CTRL_SHUTDOWN_EVENT. Estos servicios no terminan por el sistema al cerrar la sesión.

Propiedades

Id. de artículo: 115825 - Última revisión: sábado, 1 de marzo de 2014 - Versión: 2.1
La información de este artículo se refiere a:
  • Microsoft Win32 Application Programming Interface sobre las siguientes plataformas
    • Microsoft Windows NT 4.0
    • Microsoft Windows NT 3.51 Service Pack 5
Palabras clave: 
kbnosurvey kbarchive kbmt KB115825 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 115825

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com