Após um upgrade in‑place do Windows Server 2019 para 2022, o Windows Defender Firewall (MpsSvc) pode iniciar e parar em segundos com o erro 0x8007045b. Este guia traz diagnóstico objetivo, correção validada e rotinas de validação, sem derrubar RDP.
Visão geral
Em alguns cenários de atualização in‑place (2019 → 2022), o serviço Windows Defender Firewall (MpsSvc
) falha em permanecer em execução. O comando netsh advfirewall reset
retorna “an unrecoverable Windows Defender Firewall error (0x8007045b) occurred”. Mesmo após DISM
e SFC
, nada é corrigido. O impacto é amplo: políticas de firewall não carregam, perfis de rede podem ficar inconsistentes e auditorias de segurança apontam não conformidade — ainda que as sessões RDP existentes continuem funcionando.
O que o código 0x8007045b significa
O 0x8007045b
encapsula o erro Win32 ERRORSHUTDOWNIN_PROGRESS (decimal 1115). Na prática, ele costuma aparecer quando o serviço depende de um componente que não sobe (ou cujas permissões estão incorretas), levando o Windows a interpretar a inicialização como inviável e encerrar a tentativa. É um indício forte de permissões/ACLs quebradas nas chaves de serviço ou de uma dependência essencial em pane — quase sempre o Base Filtering Engine (BFE
).
Sintomas observáveis
services.msc
exibe o Windows Defender Firewall como Starting → Stopped após alguns segundos.Event Viewer > System
: Eventos do Service Control Manager (7000/7031/7023) indicando término inesperado doMpsSvc
.netsh advfirewall reset
retorna o erro irrecuperável0x8007045b
.Get-Service BFE
pode indicar Stopped ou falha ao iniciar; dependências de rede ficam incoerentes.- Acesso RDP permanece ativo, porém novas regras não são aplicadas e o firewall pode ficar parcialmente desativado.
Soluções já tentadas (sem êxito)
Ação | Resultado |
---|---|
DISM /online /cleanup‑image /scanhealth /restorehealth e SFC /scannow | Nenhuma corrupção encontrada ou corrigida |
Verificar/ remover firewalls de terceiros | Não havia; CrowdStrike foi removido sem mudar o quadro |
Comparar permissões de registro (SharedAccess , mpssvc ) | Nenhuma diferença relevante |
Parar/ desativar o serviço e reativá‑lo (sc config mpssvc ) | Mensagem Access Denied e o erro 0x8007045b persiste |
Solução aceita
Usar a ferramenta “Windows Repair (All in One)” no modo de reparos customizados, com o item Repair Windows Firewall selecionado. Esta rotina repara chaves de registro, ACLs e dependências do serviço relacionadas ao MpsSvc
, BFE
e SharedAccess
.
Por que funciona
Durante a atualização in‑place, pode ocorrer uma migração incompleta de descritores de segurança (SDDL), permissões de serviço e ACLs de chaves de registro sob HKLM\SYSTEM\CurrentControlSet\Services
, além de relações de dependência entre BFE
e MpsSvc
. O módulo de reparo do Windows Repair regrava permissões padrão, recria dependências e restaura entradas sob SharedAccess\Parameters\FirewallPolicy
, permitindo que o firewall seja inicializado normalmente.
Procedimento detalhado
- Janela de manutenção: planeje uma intervenção com possibilidade de reinicialização.
- Backup:
- Exportar chaves:
BFE
,MpsSvc
eSharedAccess
:reg export HKLM\SYSTEM\CurrentControlSet\Services\BFE C:\Temp\BFE.reg reg export HKLM\SYSTEM\CurrentControlSet\Services\MpsSvc C:\Temp\MpsSvc.reg reg export HKLM\SYSTEM\CurrentControlSet\Services\SharedAccess C:\Temp\SharedAccess.reg
- Snapshot/backup de sistema conforme política corporativa.
- Exportar chaves:
- Executar o Windows Repair (All in One) como administrador:
- Abra o utilitário, vá em Repairs > Open Repairs > Custom Mode.
- Selecione Repair Windows Firewall. Em ambientes problemáticos, é comum também marcar:
- Reset Registry Permissions (se aprovado pela política; redefine ACLs de chaves sensíveis).
- Repair Important Services e Set Windows Services to Default Startup (garante
BFE
eMpsSvc
em Automatic). - Repair Network (recria pilha Winsock e interfaces em estados padrão).
- Inicie o reparo e aguarde a conclusão. O processo pode solicitar reinicialização.
- Validação pós-reparo:
sc query BFE sc query mpssvc netsh advfirewall reset netsh advfirewall show allprofiles Get-NetFirewallProfile | Format-Table Name, Enabled
Esperado:BFE
eMpsSvc
em Running;netsh advfirewall reset
finaliza sem erro; perfis do firewall (Domain/Private/Public) em Enabled.
Após o reparo, o serviço inicia normalmente; o reset
volta a funcionar e o acesso RDP permanece íntegro.
Possíveis causas raiz e como agir
Possível causa raiz | Explicação sucinta | Ação recomendada |
---|---|---|
Corrupção nas ACLs das chaves de serviço (BFE , MpsSvc , SharedAccess ) | Quebra a inicialização do Firewall e dispara 0x8007045b (“system shutdown in progress”) | Usar script para redefinir permissões ou a própria “Windows Repair” |
Dependência corrompida do serviço Base Filtering Engine (BFE ) | Sem o BFE o Firewall não sobe | Verificar se o BFE está em Automatic e inicia sem erros |
Políticas herdadas de antivírus/EDR | Restrições de driver ou chave de registro bloqueiam MpsSvc | Desinstalar temporariamente o EDR, remover drivers residuais e limpar políticas deixadas |
Falha residual da atualização in‑place | Arquivos e permissões não migram corretamente | Como último recurso, executar In‑place Repair com ISO do Windows Server ou preparar reinstalação limpa |
Dica corporativa: após a correção, exporte uma imagem do sistema (ou snapshot) e documente as chaves de registro afetadas. Isso acelera futuros rollbacks ou automações de reparo.
Checklist de diagnóstico rápido
- Confirmar serviços
sc qc bfe sc qc mpssvc sc queryex bfe sc queryex mpssvc sc enumdepend mpssvc
Cheque seMpsSvc
depende deBFE
e se ambos estão em Automatic. - Validar perfis e política
netsh advfirewall show allprofiles netsh advfirewall show rule name=all state=enabled
- Verificar logs
- Event Viewer > Windows Logs > System: SCM (7000–7031).
- Applications and Services Logs > Microsoft > Windows > Windows Firewall With Advanced Security > Firewall.
- Se disponível: Microsoft‑Windows‑Base‑Filtering‑Engine/Operational.
- Auditar EDR/AV Remova drivers e políticas residuais. Garanta reinicialização após a desinstalação.
- Conferir GPO Computador > Configurações do Windows > Configurações de Segurança > Windows Defender Firewall with Advanced Security. Procure regras conflitantes (por exemplo, proibir serviço de firewall).
Plano B com correções manuais
Se você não puder usar a ferramenta de reparo, aplique a rotina abaixo. Execute em console elevado (Run as Administrator) e registre cada etapa para auditoria.
Garantir BFE e MpsSvc em automático e com dependência correta
sc config bfe start= auto
sc start bfe
sc config mpssvc depend= bfe
sc config mpssvc start= auto
sc start mpssvc
Observe os espaços após start=
e depend=
(são obrigatórios no sc.exe
).
Reparar pilha de rede e política do firewall
netsh winsock reset
netsh int ip reset
netsh advfirewall reset
Restaurar segurança padrão de serviços e registro (cautela)
Em servidores que herdaram permissões incorretas, a seguinte estratégia restaura ACLs padrão do sistema:
secedit /export /cfg C:\Temp\secpol-backup.inf
secedit /configure /db C:\Temp\reset.sdb /cfg %windir%\inf\defltbase.inf /areas REGKEYS FILESTORE SERVICES /verbose
gpupdate /force
Atenção: evite aplicar em Domain Controllers sem planejamento; revise exceções de segurança e softwares que exigem ACLs customizadas.
Reaplicar SDDL a partir de um servidor saudável
De um servidor funcional com a mesma versão/patch level, exporte os descritores de segurança:
sc sdshow bfe > C:\Temp\bfe.sddl
sc sdshow mpssvc > C:\Temp\mpssvc.sddl
No servidor afetado, valide diferenças e, se necessário, regrave com sc sdset
. Faça isso apenas se dominar SDDL, pois um SDDL incorreto pode impedir o boot.
Validações essenciais após a correção
- Estado dos serviços:
Get-Service BFE, MpsSvc | Select-Object Name, Status, StartType
- Política aplicada:
Get-NetFirewallProfile | Format-Table Name, Enabled, DefaultInboundAction, DefaultOutboundAction
- Regras ativas:
Get-NetFirewallRule -Enabled True | Measure-Object
- Conectividade RDP: confirme que a porta 3389 está permitida para o perfil vigente:
netsh advfirewall firewall show rule name="Remote Desktop - User Mode (TCP-In)"
- Eventos limpos: verifique se não há novos 7000/7031 relacionados a
MpsSvc
ouBFE
.
Boas práticas para evitar recorrência
- Desinstale EDR/AV legados antes do upgrade e reinstale versões certificadas para o novo SO.
- Desative políticas conflituosas de firewall durante a janela de migração.
- Execute DISM/SFC pré‑upgrade para reduzir ruído:
dism /online /cleanup-image /startcomponentcleanup /resetbase dism /online /cleanup-image /scanhealth sfc /scannow
- Automatize snapshots de VM imediatamente antes do upgrade e tags de mudança para rastreabilidade.
Perguntas frequentes
Posso aplicar a correção sem reiniciar? Na maioria dos casos, a reescrita de ACLs e serviços exige reinicialização para liberar handles e recarregar drivers/serviços dependentes.
O RDP cai durante o reparo? Em geral, não. O reparo do Firewall não remove regras padrão do RDP; ainda assim, valide acessos alternativos (iDRAC/iLO/Console VM).
Devo limpar repositórios do Windows Update? Não é obrigatório para esse erro, mas, se houver indícios de falha residual de upgrade, incluir Repair Windows Updates no Windows Repair pode ajudar.
E se o BFE não iniciar de forma alguma? Revise SDDL/ACLs, aplique secedit
como acima, verifique drivers de EDR e considere In‑place Repair com ISO.
Roteiro de execução sugerido
- Coletar evidências: eventos, saída do
sc query
, export de chaves de registro. - Garantir janela de manutenção e backup/snapshot.
- Rodar Windows Repair (All in One) com foco em Repair Windows Firewall (e reparos complementares quando aprovados).
- Reiniciar e validar serviços/perfis com os comandos deste guia.
- Documentar SDDL/ACLs atuais e armazenar para auditoria.
Apêndice técnico
Serviços e chaves relevantes
HKLM\SYSTEM\CurrentControlSet\Services\BFE
(Base Filtering Engine)HKLM\SYSTEM\CurrentControlSet\Services\MpsSvc
(Windows Defender Firewall)HKLM\SYSTEM\CurrentControlSet\Services\SharedAccess
(Firewall e ICS)HKLM\SYSTEM\CurrentControlSet\Services\PolicyAgent
(IPsec)
Comandos úteis para inventário
# PowerShell
$svcs = 'BFE','MpsSvc','PolicyAgent','IKEEXT'
Get-Service $svcs | Select Name, Status, StartType
Get-NetFirewallProfile | Select Name, Enabled, DefaultInboundAction, DefaultOutboundAction
Políticas de firewall
(Get-Item 'HKLM:\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy').Property
Regras habilitadas
Get-NetFirewallRule -Enabled True | Sort-Object DisplayName | Select -First 20 DisplayName, Direction, Action | Format-Table
Indicadores de sucesso
- Sem novos eventos 7000/7031/7023 para
MpsSvc
. netsh advfirewall reset
concluindo com Ok.BFE
eMpsSvc
em Running após reboot.- Perfis Domain/Private/Public em Enabled e regras de produção carregadas.
Resumo executivo
O erro 0x8007045b após upgrade do Windows Server costuma estar ligado a permissões/ACLs e dependências corrompidas do BFE/MpsSvc. A correção mais direta e consistente foi executar o “Windows Repair (All in One)” com o reparo de firewall, que restaura chaves, ACLs e dependências. Valide serviços, perfis e regras com os comandos indicados e, em ambientes corporativos, registre um snapshot pós‑correção e padronize a automação para rollback/novas ocorrências.