Nos sistemas operacionais Windows modernos, o Service Control Manager (SCM) ou services.exe é um dos componentes principais da operação do sistema. Este processo é responsável por iniciar, parar e interagir com vários serviços do Windows. Através deste processo, o sistema é capaz de gerenciar todos os serviços instalados e garantir que eles sejam iniciados corretamente na ordem padrão no momento da inicialização.
Se esse processo crítico for encerrado, que impacto isso terá no sistema?
A principal função do SCM é iniciar todos os serviços iniciados automaticamente de acordo com a configuração. Ele inicializa o banco de dados interno do serviço lendo um registro específico e garante que o serviço seja iniciado na ordem de carregamento correta. Se algum dos serviços não iniciar, ele será registrado em uma lista chamada ScFailedDrivers, o que pode resultar em funcionalidade limitada do sistema.
Além do gerenciamento básico de serviços, o SCM possui um recurso adicional de notificação de aplicativos GUI quando unidades de rede são criadas ou excluídas. Este recurso é particularmente importante ao usar o Windows File Explorer para acessar recursos de rede.
Quando o sistema for iniciado, o SCM executará primeiro a função SvcCtrlMain() e, em seguida, chamará ScGetBootAndSystemDriverState() para verificar se todos os drivers necessários foram carregados com sucesso. Esses drivers serão registrados em ScFailedDrivers para referência futura. Se o services.exe for encerrado, essas verificações não serão concluídas, fazendo com que o sistema não consiga garantir que todos os serviços dependentes foram carregados corretamente.
O encerramento do services.exe possivelmente causará falha na inicialização do sistema ou causará uma tela azul mortal?
Além disso, o SCM também criará um pipe nomeado como interface de comunicação entre o SCM e o processo de controle de serviço (SCP), que é crucial para a inicialização normal do serviço. Sempre que um serviço é iniciado, o SCM usa CreateProcessAsUser() para criar o processo do serviço, o que permite que o serviço seja executado em um contexto mais seguro.
Para melhorar a velocidade de inicialização do sistema, o Windows Vista introduziu o conceito de inicialização automática atrasada de serviços. Este serviço é iniciado após todos os outros serviços de início não atrasado terem sido processados. A principal diferença entre um serviço de inicialização automática atrasada e um serviço de inicialização automática normal é o tempo de inicialização, embora basicamente não haja outra diferença entre os dois durante a execução.
Ao processar drivers de dispositivos, o SCM chamará ScLoadDeviceDriver() para carregar o driver correspondente, que é outra tarefa importante relativa aos serviços. Isso significa que qualquer interação ou problema de driver com o hardware também pode não ser resolvido devido ao encerramento do services.exe, o que fará com que o hardware não funcione corretamente.
Se o services.exe for encerrado neste momento, ainda há uma chance de reiniciar esses drivers e serviços com falha?
Em conjunto, o encerramento de services.exe terá um impacto significativo na estabilidade do sistema Windows. Isso não afetará apenas a inicialização dos serviços, mas também poderá fazer com que todo o sistema entre em um estado de tela azul inoperante. Isto levanta uma questão que vale a pena ponderar: Porque é que pequenos componentes do sistema têm um impacto tão profundo nas operações globais?