Sysprep falha no Windows Server 2019: erro fatal no Microsoft‑Windows‑EventLog (0x80070003) e correção definitiva

Se o Sysprep no Windows Server 2019 está falhando com erro fatal envolvendo o componente Microsoft‑Windows‑EventLog e códigos 0x80070003 / 0x3, a causa mais comum é o redirecionamento de logs via GPO para outro volume. Abaixo trago o diagnóstico completo e a correção definitiva, com comandos prontos.

Índice

Visão geral do cenário

Após clonar uma VM de Windows Server 2019 para criar uma imagem golden, o Sysprep /generalize encerrava com erro fatal. No setupact.log (caminho típico: %WINDIR%\System32\Sysprep\Panther\setupact.log), as validações avançavam até a etapa de limpeza do serviço de logs:

... Validate pass success ...
... SysprepGeneralize: Enter
... Processing component Microsoft-Windows-EventLog
... EvtIntSysprepCleanup (wevtapi.dll) started
... dwRet = 0x3, hr = 0x80070003
... Fatal error encountered during sysprep ...

As tentativas comuns — sfc /scannow, ajustar a chave CleanupState no Registro ou desativar o serviço de logs — não surtiram efeito.

O que os códigos de erro significam

OrigemCódigoSignificadoInterpretação prática
Retorno internodwRet = 0x3ERRORPATHNOT_FOUNDO caminho de arquivo/diretório referenciado não existe.
HRESULThr = 0x80070003Path not found (erro Win32 convertido)O Windows não encontrou o local configurado para os Event Logs.
ComponenteMicrosoft‑Windows‑EventLogLimpeza de logs do SysprepA biblioteca wevtapi.dll tenta acessar/limpar arquivos nos caminhos ativos dos canais.

Causa raiz comprovada

Os Event Logs estavam redirecionados por GPO/Registro para uma unidade persistente (por exemplo, D:\), prática comum em VMs non‑persistent e ambientes VDI/RDS. Durante a fase Cleanup do Sysprep, o Windows tenta acessar e higienizar os arquivos de log nos caminhos vigentes de cada canal. Se esses caminhos estiverem fora do local padrão (%SystemRoot%\System32\winevt\Logs) e:

  • o volume não existir no momento do Sysprep;
  • o diretório estiver inacessível;
  • ou as ACLs impedirem acesso do serviço Windows Event Log,

o cleanup falha e o Sysprep retorna 0x80070003.

Por que as tentativas comuns não funcionam

  • sfc /scannow: valida binários do sistema, mas não corrige caminhos de logs definidos por políticas.
  • Alterar CleanupState: “apaga o fogo” em uma rodada, mas mantém o caminho inválido; o erro retorna.
  • Desativar o serviço de logs: o Sysprep depende do Windows Event Log; desativá-lo provoca outras falhas.

Diagnóstico rápido e certeiro

Antes de qualquer alteração, confirme quais canais estão fora do diretório padrão.

Listar canais com caminho fora do padrão

PowerShell
Get-WinEvent -ListLog * |
  Where-Object { $.LogFilePath -and ($.LogFilePath -notlike "$env:SystemRoot\System32\winevt\Logs*") } |
  Select-Object LogName, LogFilePath |
  Format-Table -AutoSize

Se algum LogFilePath aparecer em D:\ (ou outro volume), você encontrou o motivo do erro.

Correção efetiva e segura

Remova o redirecionamento dos logs antes de rodar o Sysprep para que os caminhos voltem ao padrão.

  • Mova temporariamente o servidor para uma OU sem a GPO de redirecionamento, ou
  • ajuste as chaves de canal para apontar para %SystemRoot%\System32\winevt\Logs\*.evtx.

Passo a passo recomendado

  1. Reverter o caminho dos logs para o padrão Remova/ignore a GPO que altera o caminho dos logs ou redefina os principais canais: PowerShell foreach ($log in 'Application','System','Security','Setup') { wevtutil sl $log /lfn:$env:SystemRoot\System32\winevt\Logs\$log.evtx } Em seguida, atualize políticas: cmd gpupdate /force
  2. Verificar os caminhos atuais PowerShell Get-WinEvent -ListLog * | Where-Object { $.LogFilePath -and ($.LogFilePath -notlike "$env:SystemRoot\System32\winevt\Logs*") } | Select-Object LogName, LogFilePath | Format-Table -AutoSize Se ainda houver canais fora do padrão, redefina-os individualmente. Para canais “clássicos”, use os nomes acima. Para canais sob Microsoft-*/Operational, recomendo primeiro inspecionar o caminho atual: PowerShell wevtutil gl "Microsoft-Windows-GroupPolicy/Operational" | Select-String logFileName Use o valor exibido para criar o .evtx no diretório padrão, se necessário: wevtutil sl "Microsoft-Windows-GroupPolicy/Operational" /lfn:"$env:SystemRoot\System32\winevt\Logs\Microsoft-Windows-GroupPolicy%4Operational.evtx"
  3. Garantir que o serviço Windows Event Log esteja ativo PowerShell Get-Service EventLog | Set-Service -StartupType Automatic Start-Service EventLog
  4. Executar o Sysprep novamente cmd %WINDIR%\System32\Sysprep\Sysprep.exe /generalize /oobe /shutdown

Automatização para imagens golden

Para padronizar o processo em laboratórios e pipelines de captura, use o trecho abaixo. Ele faz backup dos caminhos, normaliza os principais canais para o diretório padrão e registra o que foi alterado.

PowerShell
Executar em sessão elevada (Administrador).
$stamp = Get-Date -Format "yyyyMMdd-HHmmss"
$report = "C:\Temp\EventLogs-Paths-$stamp.csv"
New-Item -ItemType Directory -Force -Path (Split-Path $report) | Out-Null

\$logs = Get-WinEvent -ListLog \* | Where-Object { $\_.LogFilePath }
\$logs | Select-Object LogName, LogFilePath | Export-Csv -NoTypeInformation -Path \$report

Redefinir apenas os canais clássicos para o padrão conhecido

'Application','System','Security','Setup' | ForEach-Object {
\$default = Join-Path \$env\:SystemRoot "System32\winevt\Logs\$*.evtx"
Write-Host "Definindo \$* para \$default"
wevtutil sl $\_ /lfn:"\$default"
}

Write-Host "Relatório salvo em \$report" 

Dica: para canais “Microsoft‑*/Operational”, utilize wevtutil gl <canal> para descobrir o nome de arquivo “oficial” (com %4 no meio) antes de mover.

Onde a GPO costuma alterar o caminho

Administrações variam: algumas usam Preferências de Registro; outras, modelos ADMX/customização. Dois locais que frequentemente carregam o caminho do arquivo:

  • HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WINEVT\Channels<Canal>\File
  • HKLM\SYSTEM\CurrentControlSet\Services\EventLog<Log clássico>\File

Se uma GPO estiver gravando esses valores para D:\ (ou similar), o Sysprep herdará esses caminhos durante o generalize.

Tabela de verificação rápida

VerificaçãoComo fazerResultado esperado
Listar logs fora do padrãoGet-WinEvent -ListLog * com filtro por LogFilePathNenhum caminho fora de %SystemRoot%\System32\winevt\Logs
Reverter caminhos essenciaiswevtutil sl Application|System|Security|Setup /lfn:<padrão>Quatro logs clássicos no local padrão
Serviço de logs ativoGet-Service EventLogRunning e Automatic
Executar SysprepSysprep.exe /generalize /oobe /shutdownConclui sem erros

Considerações importantes para VMs non‑persistent

  • Aplique a GPO de redirecionamento após a captura: deixe a imagem golden no padrão e, somente depois de selada, mova o computador para a OU com redirecionamento.
  • Se o redirecionamento for obrigatório já na imagem: assegure que o volume/diretório exista e tenha ACLs apropriadas para o serviço EventLog durante o Sysprep.
  • Snapshots são seus aliados: antes de mexer em canais, tire um snapshot da VM.

Boas práticas para evitar recorrência

  • Padrão até a selagem: mantenha o caminho default dos logs até concluir o Sysprep.
  • Documente canais especiais: alguns produtos criam canais próprios com caminhos customizados; audite antes da captura.
  • Evite desativar o Event Log: é pré‑requisito para o Sysprep e para o diagnóstico do próprio sistema.
  • Auditoria preventiva: inclua o comando de inventário de LogFilePath no roteiro de preparação da imagem.

Exemplos de correção para canais específicos

Alguns canais usam nomes de arquivo padronizados com “%4” separando o provedor e o canal. Exemplos:

PowerShell
Política de Grupo (Operational)
wevtutil sl "Microsoft-Windows-GroupPolicy/Operational" `
  /lfn:"$env:SystemRoot\System32\winevt\Logs\Microsoft-Windows-GroupPolicy%4Operational.evtx"

Windows Update (Operational)

wevtutil sl "Microsoft-Windows-WindowsUpdateClient/Operational" \`
/lfn:"\$env\:SystemRoot\System32\winevt\Logs\Microsoft-Windows-WindowsUpdateClient%4Operational.evtx" 

Erros frequentes e como evitá-los

  • Assumir que “apenas os quatro clássicos” bastam: em muitos ambientes é suficiente, mas soluções de segurança/backup criam canais extras; verifique todos os LogFilePath.
  • Permissões insuficientes: se insistir em armazenar logs fora do sistema, garanta que a conta do serviço Event Log possa criar e escrever arquivos no diretório.
  • Montagem tardia de volumes: volumes anexados por script no startup podem não existir durante o Sysprep; resultará em 0x80070003.

Como ler o setupact.log de forma objetiva

Procure por trechos próximos a “EventLog” e “Cleanup” para focar no ponto da falha:

PowerShell
Select-String -Path "$env:WINDIR\System32\Sysprep\Panther\setupact.log" `
  -Pattern "EventLog|Cleanup|wevtapi|0x80070003" -Context 2,2

Em paralelo, verifique o setuperr.log no mesmo diretório para mensagens resumidas do erro.

Resumo em termos operacionais

Problema: o Sysprep falha na limpeza do componente Microsoft‑Windows‑EventLog com 0x80070003 porque os caminhos dos Event Logs apontam para um local inexistente/inacessível.

Solução: remover o redirecionamento antes do Sysprep, restaurando os logs para %SystemRoot%\System32\winevt\Logs, garantir o serviço Event Log ativo e então executar o Sysprep.

Perguntas frequentes

Posso manter os logs em D:\ e ainda assim rodar o Sysprep?

Sim, desde que durante o Sysprep o volume e o diretório existam e permitam escrita pelo serviço Event Log. Na prática, é mais seguro manter o padrão até a selagem e aplicar o redirecionamento depois.

Preciso reiniciar para que o wevtutil sl tenha efeito?

Para os logs clássicos, normalmente não. Para alguns canais, a mudança é aplicada imediatamente; para outros, ocorre na próxima inicialização. Como o Sysprep reinicia/desliga ao final, isso não costuma ser um problema.

E se o erro continuar após voltar ao padrão?

Revise se algum canal “Microsoft-*/Operational” continua apontando para outro volume, verifique permissões no diretório padrão, limpe arquivos .evtx corrompidos (renomeie-os) e confira se a GPO não está reaplicando o caminho inesperadamente.

Conclusão

Quando o Sysprep do Windows Server 2019 para em EvtIntSysprepCleanup com 0x80070003, quase sempre o culpado é um caminho de Event Log fora do padrão. Reverter temporariamente para %SystemRoot%\System32\winevt\Logs, garantir o serviço em execução e só depois selar a imagem elimina o erro de forma definitiva. Caso precise redirecionar novamente, faça-o após capturar o golden image — ou crie as condições para que o caminho alternativo exista durante o processo. Esse cuidado simples economiza horas de tentativas e reforça a confiabilidade do seu pipeline de imagens.

Índice