Aceder a ambiente de trabalho da aplicação a partir de um serviço

Traduções de Artigos Traduções de Artigos
Artigo: 115825 - Ver produtos para os quais este artigo se aplica.
Este artigo foi arquivado. Este artigo é oferecido "tal como está" e deixará de ser actualizado.
Expandir tudo | Reduzir tudo

Sumário

No Windows NT, versão 3.1, se pretender um serviço para ter acesso ao ambiente de trabalho da aplicação, tem de executar o serviço na conta sistema local. Um processo de serviço em execução na conta LocalSystem (ou um processo iniciado tal um serviço) pode apresentar caixas de mensagens, janelas e caixas de diálogo. Processos em execução na conta sistema local não são terminados pelo sistema durante a fim de sessão. Um número de alterações foram efectuado com o Windows NT, versão 3.5, que afectam o forma como o Windows NT interage com estes serviços. Além disso, Windows NT 3.51 tem um conjunto mais diversificado de API do ambiente de trabalho.

NOTA: Em execução serviços interactivos sob a conta de sistema é uma tenha prática perigosa. Isto é especialmente verdade do processador de comandos e ficheiros batch. Um utilizador que pretende controlar o sistema apenas pode clicada CTRL+C para obter uma linha de comandos interactiva do sistema.

Mais Informação

Seguem-se novas funcionalidades do Windows NT, versão 3.5, que afectam serviços:
  • A conta do utilizador com sessão iniciada no é a conta apenas concedida acesso a ambiente de trabalho da aplicação. O sistema local não tem acesso. Por conseguinte, é possível aceder ao ambiente de trabalho por representar o utilizador antes de efectuar qualquer utilizador ou a GDI chama.
  • Aplicações da consola e GUI, Graphical User Interface iniciadas do processo de serviço durante um determinado início de sessão são executadas numa estação invisível e ambiente de trabalho que seja exclusivo a essa sessão. A estação e o ambiente de trabalho são criados automaticamente quando inicia a primeira aplicação na sessão; estes serão destruídas quando a última aplicação sai. Não é possível efectuar estas invisíveis ambientes de trabalho visível.
  • Se pretender que um serviço na conta localsystem para interagir com o utilizador com sessão iniciada, especificar o sinalizador SERVICE_INTERACTIVE_PROCESS na chamada para CreateService(). Por exemplo:
          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 );
    						
    se especificar uma conta diferente de localsystem quando utilizar SERVICE_INTERACTIVE_PROCESS, obterá o erro INVALID_PARAMETER (87).
  • Se utilizar CreateProcess() para iniciar o processo e pretender que o serviço de sessão de ambiente de trabalho de utilizadores, atribua o parâmetro lpdesktop a estrutura STARTUPINFO com "WinSta0\\Default".
  • Serviços apenas necessitam de uma notificação de utilizador visíveis podem fazê-lo chamar MessageBox() com o sinalizador MB_SERVICE_NOTIFICATION. Utilizar o sinalizador MB_DEFAULT_DESKTOP_ONLY funciona bem, mas apenas se ambiente de trabalho o utilizador está activa. Se a estação de trabalho está bloqueada ou uma protecção de ecrã estiver em execução, a chamada falhará.

    NOTA: Se estiver a escrever código para uma aplicação que pode ser executado como um serviço ou um executável, não pode utilizar MB_SERVICE_NOTIFICATION, bem como um hwndOwner não nulo.
  • Qualquer saída efectuada para uma janela não é apresentada ou disponibilizada para a aplicação de qualquer forma. Tentativas para ler bits a partir de resultados de uma falha.
  • Serviços de interface gráfica do utilizador não recebe mensagens WM_QUERYENDSESSION/WM_ENDSESSION no fim de sessão e encerramento; em vez disso, recebem eventos CTRL_LOGOFF_EVENT e CTRL_SHUTDOWN_EVENT. Estes serviços não são terminados pelo sistema no fim de sessão.

Propriedades

Artigo: 115825 - Última revisão: 1 de março de 2014 - Revisão: 2.1
A informação contida neste artigo aplica-se a:
  • Microsoft Win32 Application Programming Interface nas seguintes plataformas
    • Microsoft Windows NT 4.0
    • Microsoft Windows NT 3.51 Service Pack 5
Palavras-chave: 
kbnosurvey kbarchive kbmt KB115825 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 115825

Submeter comentários

 

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