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.