Em algum momento da vida útil do meu sistema PC Desktop, tive duas telas azuis seguidas enquanto jogava videogame. Depois disso, consegui impedir que o sistema travasse, reconectando todo o hardware, mas por algum motivo, quaisquer atualizações do Windows que afetassem o sistema, como a atualização anual de 1803 a 1903 e uma atualização aleatória do .NET framework para 4.8 para a versão 1803 do Windows continuou falhando na instalação. Como eles não eram obrigatórios, eu não lhes dei atenção, pois as atualizações regulares de segurança do Windows Defender ainda funcionavam. Em algum momento, executei o Solucionador de problemas do Windows Update, que dizia ter encontrado alguns erros, mas uma reinicialização executaria uma rotina de correção.
Em algum momento, decidi fazer as atualizações funcionarem novamente. As falhas de atualização foram 0x8000ffff para a atualização do .NET e 0x800700C12 para a atualização do Windows.
Ao procurá-los, você encontra um monte de porcaria online, pois todos sabemos que todo e qualquer erro do Windows é o lugar perfeito para fazer com que pessoas vulneráveis instalem malware.
Baixar o MediaCreationTool e solicitar que ele fizesse uma atualização manual para 1903 também falhou com um “erro crítico”, embora parecesse que nada afetou o sistema e simplesmente não aplicou nenhuma alteração. Porém, não há registros (OBRIGADO MICROSOFT POR ESTAS MENSAGENS DE ERRO ÚTEIS)
Despejar o log do Windows Update por meio do comando Powershell GetWindowsUpdateLog resultou na descoberta de ... não muito. Ler esses logs de erros é tedioso e complicado e a diferenciação entre erros e falhas, bem como simplesmente o fato de que existem sistemas envolvidos dos quais você nunca terá ouvido falar durante a operação normal (pelo menos no Linux você sabe quais sistemas usa e instala ao configurar configurar o sistema) não ajudou.
Tentei então fazer uma instalação manual do .NET 4.8 Framework. Ele também falhou no instalador normal, mas pelo menos despejou um .xml pesquisável em algum local aleatório de minhas unidades (por algum motivo, despejou os arquivos de instalação em meu disco rígido de armazenamento lento de 2 TB, em vez de em algum lugar no SSD em que o sistema foi instalado. por exemplo. Mas ei! Windows e arquivos temporários! O que poderia dar errado se os arquivos temporários nunca fossem limpos?). Analisando isso, percebi que algum programa de linha de comando executado durante as etapas finais da instalação falhou e retornou com o mesmo código de erro 0x8000ffff: wusa.exe
Comparar pelo menos mensagens de erro é um erro comum durante a instalação: A parte de finalização falha.
Procurando maneiras de corrigir o Windows Update, encontrei conselhos ao tentar usar:
sfc /scannow
e
dism.exe /online /cleanup-image /restorehealth
sfc falhou com a informação de que ainda há alterações pendentes no sistema e que devo reiniciar o PC. Fiz isso nos últimos 6 meses todos os dias, então essa não poderia ser a solução.
dism.exe falhou em cerca de 82,6% e pelo menos me deu a dica de que há registros para pesquisar. Mesmo que eles também não tenham sido muito úteis em seu formato, eles também falharam em alguma etapa de finalização.
Procurando como fazer o sfc funcionar novamente, encontrei uma postagem aleatória no fórum informando ao usuário para excluir o pendente.xml no diretório WinSxS. Olhando para esse diretório (para o que quer que seja usado), encontrei o pendente.xml - com quase 300 MB de tamanho. Algo não parece certo.
Excluir o arquivo como administrador não funciona. Continuo recebendo erros de acesso negado. Mesmo baixando o PSTools e abrindo o power shell como o usuário SYSTEM me nega o direito de excluí-lo. Não há processos que contenham um identificador para o arquivo.
Como faço para corrigir essa bagunça e como todos esses erros estão interligados?
Responder1
Acontece que tudo parece ser uma confusão de erros.
A tela azul (a primeira que recebi em cerca de 10 anos) que recebi enquanto jogava videogame parecia ter acontecido enquanto o Windows Update estava instalando algo em segundo plano. Se a atualização em si foi responsável, eu não sei, mas tive que passar por alguns obstáculos para fazer meu sistema funcionar novamente, pois ele relatou que o script de inicialização estava corrompido. Naquela época, acho que executei alguma ferramenta básica de linha de comando no menu de inicialização avançada de solução de problemas para corrigir o problema de inicialização. Então reconectei tudo porque os logs de erros me disseram que algo estranho aconteceu ao gravar coisas no disco, então pensei que por algum motivo a conexão do fio ao SSD do sistema foi cortada enquanto o sistema estava em execução. Depois que isso foi corrigido, o sistema funcionou perfeitamente novamente, mas as atualizações não funcionaram mais.
Acontece que a “corrupção de arquivos” foi mais profunda. Parece que dentro do pendente.xml existe uma lista de atualizações que devem ser aplicadas quando o PC for reiniciado. Esse arquivo .xml foi de alguma forma quebrado, não permitindo que o Windows LER seu conteúdo com sucesso, mas ainda permitindo ADICIONAR ao arquivo quebrado todas as atualizações que ele achava que deveria aplicar, lendo assim uma quantidade arbitrária de dados do arquivo e, em seguida, anexando tudo isso dados na parte de trás dele durante cada reinicialização, aumentando cada vez mais e até proporções de quase GB de metadados sobre atualizações pendentes.
Como a atualização do Windows e o instalador .NET também desejam informar ao sistema "É necessário fazer algo na próxima reinicialização do dispositivo" durante a etapa de finalização, mesmo os instaladores independentes e a atualização manual com a ferramenta de criação de mídia, eles também não conseguiram analisar e adicionar o pendente.xml corretamente. Como tudo isso foi quebrado, o ComponentBasedServicing parecia ser responsável por alguns programas, então foi o CBS que apareceu aqui e ali nos arquivos de log de erros.
Agora vamos à solução:
Primeiro tive que inicializar no modo de solução de problemas a partir de um pendrive que configurei com a ferramenta de criação de mídia.
Lá lancei uma linha de comando e excluí manualmente o pendente.xml do diretório WinSxS.
Depois disso, consegui executar um relatório sfc /scannow
para finalmente obter um relatório de que alguns arquivos estavam corrompidos e algumas coisas foram corrigidas, mas não todas.
Depois disso, consegui executar um dism /online /cleanup-image /restorehealth
que não conseguiu encontrar uma fonte para limpar.
Depois disso, consegui executar um dism /online /cleanup-image /startcomponentcleanup
serviço para limpar o componente
Depois disso, consegui conduzir outro /restorehalth
para o sucesso.
Depois disso, consegui redefinir o cache do Windows Update e fazer com que ele baixasse novamente todas as atualizações e upgrades pendentes.
Depois disso, consegui instalar a atualização de 1903, bem como a atualização do .NET Framework.
Agora tudo parece bem.
Eu adoraria que o Windows desse a um usuário - não apenas a um superusuário - informações mais claras sobre o que está ou não quebrado no sistema quando QUALQUER COISA quebra.
Essa busca foi um inferno. E eu saí dessa.