Lista de Registos de Serviço
À medida que 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 por demanda)
- Estado do serviço (ver a estrutura SERVICE_STATUS)
- Tipo
Estado atual
Códigos de controlo 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 Autoridade de Segurança Local (LSA). 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 gerenciar 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 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 de um serviço.
Um serviço pode registrar informações de tipo adicionais chamando o função SetServiceBits. O NetServerGetInfo e funções de NetServerEnum obtêm os tipos de serviço suportados.