Compartilhar via


Lista de registros de serviço

À medida que cada entrada de serviço é lida do banco de dados dos serviços instalados, o SCM cria um registro de serviço para o serviço. Um registro de serviço inclui:

  • Nome do serviço
  • Tipo de início (início automático ou início da demanda)
  • Status do serviço (consulte a estrutura SERVICE_STATUS)
    Tipo
    Estado atual
    Códigos de controle aceitáveis
    Sair do código
    Dica de espera
  • Ponteiro para a lista de dependências

O nome de usuário e a senha de uma conta são especificados no momento em que o serviço é instalado. O SCM armazena o nome de usuário no registro e a senha em uma parte segura da LSA (Autoridade de Segurança Local). O administrador do sistema pode criar contas com senhas que nunca expiram. Como alternativa, o administrador do sistema pode criar contas com senhas que expiram e gerenciam as contas alterando as senhas periodicamente.

O SCM mantém duas cópias da senha de uma conta de usuário, uma senha atual e uma senha de backup. A senha especificada na primeira vez em que o serviço é instalado é armazenada como a senha atual e a senha de backup não é inicializada. Quando o SCM tenta executar o serviço no contexto de segurança da conta de usuário, ele usa a senha atual. Se a senha atual for usada com êxito, ela também será salva como a senha de backup. Se a senha for modificada com a função ChangeServiceConfig ou o utilitário do painel de controle serviços, a nova senha será armazenada como a senha atual e a senha anterior será armazenada como a senha de backup. Se o SCM tentar iniciar o serviço e a senha atual falhar, ele usará a senha de backup. Se a senha de backup for usada com êxito, ela será salva como a senha atual.

O SCM atualiza o status do serviço quando um serviço envia notificações de status usando a funçãoSetServiceStatus. O SCM mantém o status de um serviço de driver consultando o sistema de E/S, em vez de receber notificações de status, como faz em um serviço.

Um serviço pode registrar informações de tipo adicionais chamando a função SetServiceBits. As funções NetServerGetInfo e NetServerEnum obtêm os tipos de serviço com suporte.