O Hibernate está desativado, o hiberfil.sys é recriado a cada inicialização


20

Eu tenho o Windows 7 rodando em uma pequena partição (40 GB), com 4 GB de RAM. Isso significa que o arquivo hiberfil.sys criado pelo Hibernate ocupa uma parte significativa do espaço em disco disponível. Eu gostaria de removê-lo.

Estou ciente de que posso desativar o Hibernate e remover o hiberfil.sys inserindo powercfg -h offum prompt de comando elevado. Isso funciona - o arquivo é removido imediatamente e, após isso, a HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Power\HibernateEnabledchave é (corretamente) definida como 0.

No entanto, na próxima vez que eu reiniciar o PC, o hiberfil.sys retorne dos mortos, o Hibernate será reativado e essa chave do Registro retornará para 1.

Estou praticamente do lado da minha mente com isso. Quase tudo o que posso encontrar online relacionado à remoção do arquivo hiberfil.sys simplesmente sugere o uso do powercfg para desativar a hibernação, e isso parece funcionar para praticamente todos. Mas isso continua voltando para mim! (Como um vampiro, sugando meu espaço em disco.) Encontrei outro tópico de alguém que parece ter o mesmo problema, mas nenhuma das sugestões funcionou para o pôster original (ou para mim). Ainda assim, eu tentei de tudo listado lá, incluindo:

  • Desativando o sono híbrido

  • Desabilitando o Hibernate através do prompt de comando, pela GUI de Opções de Energia e pelas duas (em ambas as ordens)

  • Alterar manualmente a HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Power\HibernateEnabledchave

  • Praticamente tudo o mais que consigo pensar!

Quero reiterar que não tenho problemas em remover o arquivo - isso funciona muito bem. Ele volta após cada reinicialização. Estou quase pronto para jogar a toalha e apenas executar um script no login para desativar o Hibernate toda vez, mesmo que pareça uma "solução" loucamente hacky. . . mas eu esperava que alguém aqui pudesse sugerir outra coisa, primeiro.


Você deve ter algum software de segurança monitorando e protegendo o registro.
Moab

11
Dado há quanto tempo essa questão está lá, e como esse pode ser um problema predominante, eu coloquei uma recompensa nessa questão.
precisa saber é o seguinte

Você não tem um software de inicialização personalizado instalado que faria isso, faria?
Mehrdad

Respostas:


18

Minha instalação do Windows 7x64 está em uma partição SSD em um laptop Mac. Eu desabilitei com powercfg / h desativado (elevado) e o ms fixit desabilita o hibernate, bem como a chave de registro de configuração HibernateEnable como 0. O Hiberfil.sys é excluído apenas até a reinicialização. Quando eu inicializo o hiberfil.sys nativo, sempre é recriado, mas quando eu inicializo o OS X e o VMware Fusion, a hibernação permanece desativada, como deveria.

A sugestão de Tom Wijsman do ProcessMonitor com registro de inicialização me ajudou a descobrir que o vmtoolsd.exe (da VMware) estava reativando a chave do registro durante a inicialização nativa. Tentei alterar as permissões no regedit, mas elas não pararam a alteração do valor para 1. Pensei em criar um pequeno hiberfil.sys, mas acho que isso teria sido substituído.

Como uma solução de 99%, alterei o valor HiberFileSizePercent para decimal 1, o que torna o hiberfil.sys apenas 80 MB em uma máquina de 8 GB de RAM. Suponho que poderia tentar 0,001 ou menos, mas 80 MB não é muito.


11
Obrigado - também estou em um Macbook com Bootcamp e VMWare Fusion, você provavelmente me salvou horas.
214 DanB

13

Você pode solucionar facilmente isso com Process Monitor .

Inicie e ative o registro de inicialização no menu Opções , reinicie o computador e inicie o Process Monitor.

Depois, deixe de capturar e procure por HibernateEnabled e verifique o que mudou o valor.


Para informações mais avançadas, isso também pode ser feito com o XBootMgr no Windows Performance Toolkit.

Instruções de instalação - Documento de análise de desempenho de transição On / Off


3
Como sua resposta tem maior potencial para solucionar o problema, decidi conceder a recompensa a você.
precisa saber é o seguinte

Este método resolveu meu problema. Obrigado! (Meu problema é sobre o Wake-On-LAN, detalhes aqui: superuser.com/questions/1405082/… )
smwikipedia

6

Se você estiver usando o boot camp e a fusão de vmware:

Localize o arquivo% programfiles% \ VMware \ VMware Tools \ plugins \ vmsvc \ disableGuestHibernate.dll exclua-o ou mova-o.

Por fim, desative a hibernação de uma vez por todas, abrindo um prompt de comando elevado do administrador e executando:

powercfg -h desligado

O plug-in disableGuestHibernate é carregado quando as ferramentas vmware são carregadas. Se as ferramentas vmware forem carregadas durante a execução em uma vm, ela desativará a hibernação (uma vez que o vmware possui seu próprio sistema de suspensão, tornando a hibernação redundante.) reative a hibernação se estiver desativada.


Esta é uma ótima resposta e bem detalhada. Se eu pudesse dar 10 votos positivos, eu daria!
Rijk

A propósito: simplesmente renomeá-lo não funciona, você realmente precisa remover a dll.
Rijk

Isso corrigiu para mim também. Voto a favor!
MortenRøgenes

4

Você pode tentar ativar e desativar a hibernação novamente. No cmd "Executar como Administrador", faça:

powercfg.exe /hibernate on
powercfg.exe /hibernate off
del c:\hiberfil.sys

Se você estiver usando um laptop, depois de ativar a hibernação e antes de desligá-lo, faça também o seguinte:

  1. Verifique se o sono híbrido está desativado.
  2. Opções de energia → Alterar configurações do plano → Alterar configurações avançadas de energia, expandir Suspensão e alterar o valor de "Na bateria" e "Conectado" para 0 minutos.

imagem


2

Eu tive o mesmo problema. Tentou:

powercfg –H OFF

Set HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Power\HibernateEnabled

Defina Control Panel\All Control Panel Items\Power Options\Edit Plan Settingspara Nunca para todas as opções de energia.

E o arquivo continuava voltando à vida. O conselho de usar o monitor de processo fez o truque para mim. O sistema que eu uso tem o "Pointsec for PC" instalado e o processo prot_srv.exe ficava redefinindo esse valor. Dado que este PC está bloqueado com este software, não há muito que eu possa fazer.


1

mesma coisa aqui!

por frustração, eu até configurei a política local de forma a executar um cmd na inicialização da máquina que executaria a linha powercfg, mas mesmo isso não é o suficiente!

isso é realmente frustrante, pois estou executando o Win7 Ultimate em uma partição de 60 GB.

no meu próximo experimento, brincarei com a chave de registro "HiberFileSizePercent" em:

HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Power

e veja se isso pode forçá-lo a (re) criar um arquivo menor pelo menos.

f.


+1 - Essa é provavelmente uma boa ideia. Encontrei essa mesma solução enquanto ajudava outro usuário com seus problemas de hibernação não relacionados.
SgtOJ

Eu nunca acabei resolvendo isso. Eu executei um script de login por um tempo, mas era esquisito e acabei comprando uma unidade maior e deixando o arquivo hiberfil.sys no lugar. Desejo-lhe boa sorte e seguirei este tópico. Se você for bem-sucedido, poste de volta!
Corey White

Você também pode excluir hiberfil.sysapós desativar a hibernação e criar um diretório chamado hiberfil.sys. Você não pode ter um arquivo e um diretório no mesmo diretório com o mesmo nome; portanto, o Windows não poderá criar um arquivo chamado hiberfil.sys. Obviamente, a MS pode ter explicado isso e criar outro arquivo (hiberfi2.sys?) Ou pode reclamar em voz alta.
Bacon Bits

@BaconBits: biziclop disse que isso não funciona; O Windows substitui a pasta pelo hiberfil.sysarquivo.
precisa saber é o seguinte

1

Não é uma solução, mas uma solução alternativa que funcionou para mim:

Eu tinha apenas 900 MB de espaço livre na unidade C e queria me livrar do arquivo hiberfil.sys, que demorou mais de 6 GB. Então eu o removi com powercfg -h. Mas ele continuou voltando depois de 10 segundos ou algo assim. Eu acho que tem algo a ver com PointSec, porque isso foi mencionado aqui anteriormente.

Desativei a hibernação e copiei rapidamente um arquivo de 1 GB para a unidade C. Agora ele não volta e ainda tenho 6 GB de espaço restante. Acho que ainda está tentando ativar a hibernação e descobre que não há mais espaço suficiente para isso. E da próxima vez que ficar sem espaço na unidade C, ainda posso excluir o arquivo de 1 GB.


0

Talvez recrie-o manualmente após a remoção e defina permissões para não permitir que o sistema modifique o arquivo? Eu sei, é um tiro no escuro.

Isso pode ser causado por uma partição de restauração ou similar?


0

Eu tenho uma solução alternativa que parece funcionar muito bem para mim (embora talvez nem todos). Pelo que reuni, o vmtoolsd.exe desativa a hibernação ao inicializar no VMware e o reativa (independentemente do estado anterior) ao inicializar nativamente. Como o VMware Tools não é necessário ao executar o nativo (Boot Camp), criei um arquivo em lotes contendo o seguinte:

@echo off

if "%NUMBER_OF_PROCESSORS%" == "1" goto :enable
goto :end

:enable
net start "VMware Tools"

:end

Defino o serviço VMware Tools como Manual (em vez de Automático) e criei uma tarefa no Agendador de tarefas. A tarefa é configurada da seguinte maneira:

  • Executar se o usuário está logado ou não
  • Executar com os privilégios mais altos
  • Oculto (pode não ser necessário)
  • Triggers: na inicialização do sistema
  • Ações: o arquivo em lotes acima
  • Desmarque tudo em Condições / configurações (pode não ser necessário)

NOTA: como eu confio no NUMBER_OF_PROCESSORS para diferir quando inicializado nativamente, isso só funcionará se você não tiver a máquina virtual com o mesmo número de processadores (lógicos, não físicos) no seu Mac.

Além disso, o arquivo em lotes pode ser simplificado para:

@if "%NUMBER_OF_PROCESSORS%" == "1" net start "VMware Tools"

Eu tinha algumas coisas no arquivo em lotes para depuração / teste e apenas o mantive.


ot, mas ter uma verificação de igualdade e 2 gotos sobrepostos assim prejudica meus sentidos estéticos quando você pode ter apenas um não-igual e 1 goto.
underscore_d

0

Como oKtosiTe disse, tentei essa abordagem sorrateira, pois nada mais funcionou para mim. O ProcessMonitor simplesmente mostrou que a entrada no registro é criada por powercfg.exesi só.

Não posso simplesmente desativar / renomear ou removê-lo.

Provavelmente devido às Políticas de Grupo que estão espalhadas por todo o meu laptop (laptop da empresa -> políticas de segurança super estúpidas da empresa!).

Então executei o comando, hiberfile.sysdesapareci por alguns segundos, copiei o arquivo nomeado hiberfile.sysde outro lugar (criado no editor e com 1 KB de tamanho) e alterei suas permissões para somente leitura (propriedades do arquivo).

Fiz a mágica!

Então, resumindo:

  1. Executar em cmd powercfg -h off
  2. Copiar preparado hiberfile.sys
  3. Propriedades -> somente leitura

Feito!

Nota: sem alterar o arquivo de permissão, volte para cerca de 6 GB no meu caso.

hiberfile.sys apenas 1 KB agora


0

O crédito vai para @Tom Wijsman.

Meu problema específico é sobre o Wake-On-LAN bloqueado pela hibernação, detalhes aqui: Como desativar permanentemente a hibernação no Windows 10?

Eu segui o método dele e obtive o log de inicialização.

No meu caso, é o vmtoolsd.exeque manteve a configuração abaixo do valor do registro para 1, que superou totalmente o powercfg /h off.

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Power\HibernateEnabled

O vmtoolsd.exepertence a VMware Tools.

Depois de desinstalá-lo, o hiberfil.sysnunca foi recriado.


-2

Meia resposta:

No Windows XP, essa era uma solução fácil e permanente:

  1. exclua hiberfil.sys com este comando (com direitos de administrador): powercfg -h off

  2. crie uma pasta chamada "hiberfil.sys" em C: \

Infelizmente, o Win7 é "mais inteligente" que o XP e mata essa pasta, ignorando qualquer combinação de propriedade / permissão que eu tentei. Mas às vezes minha pasta hiberfil.sys sobreviveu a uma única reinicialização sem ser substituída. Também é interessante que o sistema pareça regenerar o arquivo original após alguns segundos em que a janela de C: \ apareceu na área de trabalho.

E obrigado pelo meu primeiro voto negativo :)


Pode não ser uma idéia tão ruim - você pode definir suas permissões para que nem o Sistema possa excluí-lo (sem primeiro alterar suas permissões). Obviamente, o win7 pode simplesmente se recusar a inicializar.
Hugh Allen

@Hugh: É possível que o código de hibernação, fazendo parte do kernel, apenas ignore as ACLs.
grawity
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.