Existe um banco de dados no Registro para controlar como os serviços são carregados. Este é o banco de dados do Gerenciador de Controle de Serviço.
O Gerenciador de Controle de Serviços executa o services.exe. Os serviços são definidos no Registro em HKLM \ SYSTEM \ CurrentControlSet \ Services.
O valor Type
da entrada do serviço especifica se ele está carregado em seu próprio processo ou em um processo que hospeda vários serviços.
Quando o SCM decide iniciar um serviço, ele chama o ScStartService. O ScStartService determina o nome do arquivo que executa o processo do serviço, lendo o valor ImagePath
da chave do Registro do serviço. O valor ImagePath
também contém o nome do grupo. Em seguida, examina o valor Type
. Um valor de 0x20 indica um processo compartilhado.
Para responder à sua pergunta sobre como executar um serviço em seu próprio processo, use o comando sc config
.
Exemplo: sc config wuauserv type= own
O espaço após = é obrigatório.