-->

sábado, 17 de janeiro de 2009

Windows Vista levando até oito minutos para desligar.

Era um notebook HP com o Windows Vista Home Premium, sem SP1. Todas as vezes que eu mandava desligar, ficava uma eternidade com a mensagem "Shutting Down..." ("Encerrando...") na tela. O tempo exato variava, mas sempre havia uma atividade incessante no HDD desde que a mensagem era exibida até o momento do notebook finalmente desligar.

A primeira coisa que tentei foi instalar o SP1, já que o Vista original é uma fábrica de bugs e este poderia ser um deles. Mas o instalador da MS aborta nessa máquina com a mensagem:

Erro interno ao instalar o service pack
Código de erro: 0x800F0823.
Consulte:http://go.microsoft.com/fwlink/?LinkId=101139


As informações dadas no link foram inúteis, mas por conta disso eu desconfiei de que o problema ao desligar fosse provocado por um update automático da MS que havia "pirado" e estava tentando se instalar sem sucesso toda vez que o Windows era desligado. Mas não encontrei nenhuma evidência nos logs de evento que confirmasse isso. Eu até desliguei completamente o Windows Update e isso pareceu reduzir o tempo de desligamento para 3m30s, mas mesmo depois de reativar o serviço o tempo continuou baixo. Verifiquei o arquivo %WINDIR%\WindowsUpdate.log (que é atualizado sempre que o Vista é desligado) e não havia absolutamente nada de anormal sendo registrado nos horários de desligamento.

De qualquer forma, 3m30s é tempo demais. Eu tinha um outro notebook HP comigo e o tempo para desligar era de uns poucos segundos.

Para encurtar a estória, depois de duas horas de pesquisa e tentativas (a maior parte do tempo gasto esperando o maldito desligar), achei a causa. Alguém ou algo havia ativado ClearPageFileAtShutdown no Registro. Assim toda vez que o Windows desligava o arquivo de paginação estava sendo "sobreescrito". E isso leva tempo. Daí a atividade incessante de disco.

Por que sobreescrever o arquivo de paginação?

O arquivo de paginação contém uma cópia parcial da memória do PC. Em teoria é possível varrê-lo à procura de senhas e outras informações "secretas" sobre o que você fez da última vez que usou o computador, mas o sucesso desse tipo de operação é incerto. Geralmente apenas empresas e pessoas paranóicas se preocupam com isso. Note que simplesmente "apagar" o arquivo no sentido tradicional do Windows não basta, porque o arquivo pode ser "desapagado". O que ClearPageFileAtShutdown faz é sobreescrever cada byte do arquivo, tornando o seu conteúdo inútil.

O cliente certamente não havia feito isso conscientemente, pois ele não se encaixa no perfil "paranóico". Eu presumo que isso tenha sido ativado pelo programa nCleaner, que estava instalado no notebook e ele também não sabia o motivo.

Para desativar, olhe no Registro em
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management
e certifique-se de que o valor de ClearPageFileAtShutdown seja zero.

Fiz isso e o notebook do cliente passou a desligar em menos de 30 segundos.

22/11/09: Recebi outro notebook igual ontem com o mesmo problema e a solução foi a mesma.

2 comentários:

  1. Tentei isso no meu notebook e não deu certo, o ClearPageFileAtShutdown está zero e continua desligando em mais de 3 minutos.

    ResponderExcluir
  2. Anônimo,

    O problema explicado por mim é apenas um dos muitos (a lista é enorme) motivos para o Windows demorar a desligar.

    ResponderExcluir

Siga as regras do blog ou seu comentário será ignorado.