Lista de Registros de Serviço

Como cada entrada de serviço é lida do banco de dados de 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 de serviço (consulte a estrutura de SERVICE_STATUS)
    Type
    Estado atual
    Códigos de controle aceitáveis
    Código de saída
    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 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 serviço status quando um serviço o envia status notificações usando a função SetServiceStatus. O SCM mantém a status de um serviço de driver consultando o sistema de E/S, em vez de receber status notificações, como faz com 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.