L'ibernazione è disabilitata, hiberfil.sys viene ricreato ad ogni avvio


20

Ho Windows 7 in esecuzione su una piccola partizione (40 GB), con 4 GB di RAM. Ciò significa che il file hiberfil.sys creato da Hibernate occupa una parte significativa dello spazio su disco disponibile. Vorrei rimuoverlo.

Sono consapevole che posso disabilitare Hibernate e rimuovere hiberfil.sys inserendo powercfg -h offun prompt dei comandi con privilegi elevati. Funziona: il file viene immediatamente rimosso e, dopo averlo fatto, la HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Power\HibernateEnabledchiave viene (correttamente) impostata su 0.

Tuttavia, al successivo riavvio del PC, hiberfil.sys ritorna da zero, Hibernate viene riabilitato e la chiave di registro è tornata su 1.

Sono praticamente alla fine del mio ingegno con questo. Quasi tutto ciò che posso trovare online relativo alla rimozione del file hiberfil.sys suggerisce semplicemente di usare powercfg per disattivare l'ibernazione, e questo sembra funzionare per quasi tutti. Ma continua a tornare per me! (Come un vampiro, che mi succhia lo spazio su disco.) Ho trovato un altro thread di qualcuno che sembra aver avuto lo stesso problema, ma nessuno dei suggerimenti ha funzionato per il poster originale (o per me). Tuttavia, ho provato tutto quanto elencato lì, tra cui:

  • Disabilitazione del sonno ibrido

  • Disabilitare l'ibernazione tramite il prompt dei comandi, tramite la GUI delle opzioni di risparmio energia ed entrambi (in entrambi gli ordini)

  • Modifica manuale della HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Power\HibernateEnabledchiave

  • Praticamente tutto ciò che mi viene in mente!

Voglio ribadire che non ho problemi a rimuovere il file - funziona alla grande. Torna appena dopo ogni riavvio. Sono quasi pronto a gettare la spugna ed eseguire uno script all'accesso per disabilitare Hibernate ogni volta, anche se sembra una "soluzione" follemente confusa. . . ma speravo che qualcuno qui potesse suggerire qualcos'altro, prima.


È necessario disporre di alcuni software di sicurezza per il monitoraggio e la protezione del registro.
Moab,

1
Dato da quanto tempo questa domanda è rimasta lì, e poiché questo potrebbe essere un problema prevalente, ho messo una taglia su questa domanda.
bwDraco - Ripristina Monica il

Non hai installato un software di avvio personalizzato che lo farebbe, vero?
Mehrdad,

Risposte:


18

La mia installazione di Windows 7x64 è su una partizione SSD su un laptop Mac. Ho disabilitato con powercfg / h off (elevato) e l'ibernazione disabilita di ms fixit, così come l'impostazione della chiave di registro HibernateEnable su 0. Hiberfil.sys viene cancellato solo fino al riavvio. Quando avvio hiberfil.sys nativo viene sempre ricreato, ma quando eseguo l'avvio all'interno di OS X e VMware Fusion, l'ibernazione rimane disabilitata, come dovrebbe.

Il suggerimento di Tom Wijsman di ProcessMonitor con la registrazione di avvio mi ha aiutato a scoprire che vmtoolsd.exe (da VMware) stava riabilitando la chiave di registro durante l'avvio nativo. Ho provato a cambiare le autorizzazioni in regedit, ma non hanno fermato la modifica del valore in 1. Ho pensato di creare un piccolo hiberfil.sys, ma penso che sarebbe stato sovrascritto.

Come soluzione al 99%, ho modificato il valore HiberFileSizePercent su 1 decimale, il che rende hiberfil.sys solo 80 MB su una macchina RAM da 8 GB. Suppongo di poter provare .001 o meno, ma 80 MB non sono molti.


1
Grazie - Sono su un Macbook con Bootcamp e anche VMWare Fusion, probabilmente mi hai risparmiato ore.
Dan

13

Puoi facilmente risolvere questo problema con Process Monitor .

Avviarlo e abilitare Boot Logging nel menu Opzioni , riavviare il computer e avviare Process Monitor.

Quindi, lascia che smetta di catturare e quindi cerca HibernateEnablede controlla cosa ha cambiato il valore.


Per approfondimenti più avanzati, questo può essere fatto anche con XBootMgr da Windows Performance Toolkit.

Istruzioni di installazione - Documento di analisi delle prestazioni di transizione on / off


3
Poiché la tua risposta ha il massimo potenziale per risolvere il problema, ho deciso di premiarti.
bwDraco - Ripristina Monica il

Questo metodo ha risolto il mio problema. Grazie! (Il mio problema riguarda Wake-On-LAN, dettagli qui: superuser.com/questions/1405082/… )
smwikipedia

6

Se stai utilizzando Boot Camp e VMware Fusion:

Trova il file% programfiles% \ VMware \ VMware Tools \ plugins \ vmsvc \ disableGuestHibernate.dll eliminalo o spostalo.

Infine, disabilitare l'ibernazione una volta per tutte aprendo un prompt dei comandi con privilegi di amministratore ed eseguendo:

powercfg -h off

Il plug-in disableGuestHibernate viene caricato quando vengono caricati gli strumenti vmware. Se gli strumenti di vmware vengono caricati durante l'esecuzione in un vm, disabiliterà l'ibernazione (poiché vmware ha il proprio sistema di sospensione che rende l'ibernazione ridondante). Ma se gli strumenti di vmware vengono caricati al di fuori di un vm (ovvero invece si utilizza boot camp per avviare Windows) riattivare l'ibernazione se disabilitato.


Questa è un'ottima risposta e ben dettagliata. Se potessi dare 10 voti, lo farei!
Rijk,

A proposito: semplicemente rinominare non funziona, devi davvero rimuovere la dll.
Rijk,

Questo ha risolto anche per me. Upvote!
MortenRøgenes,

4

Potresti provare a riattivare e disattivare l'ibernazione. Nel cmd "Esegui come amministratore" fai:

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

Se si utilizza un laptop, dopo aver acceso l'ibernazione e prima di spegnerlo, procedere come segue:

  1. Assicurarsi che la sospensione ibrida sia disabilitata.
  2. Opzioni risparmio energia → Modifica impostazioni piano → Cambia impostazioni avanzate risparmio energia, espandi Sospensione e modifica il valore di "A batteria" e "Collegato" a 0 minuti.

Immagine


2

Ho avuto lo stesso problema. Provato:

powercfg –H OFF

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

Impostare Control Panel\All Control Panel Items\Power Options\Edit Plan Settingssu Mai per tutte le opzioni di risparmio energia.

E il file continuava a tornare in vita. Il consiglio di usare Process Monitor mi ha aiutato. Nel sistema che uso è installato "Pointsec per PC" e il processo prot_srv.exe ha reimpostato questo valore. Dato che questo PC è bloccato con questo software, non c'è molto che io possa fare.


1

stessa cosa qui!

per frustrazione, ho persino configurato la politica locale in modo che eseguisse un cmd all'avvio della macchina che eseguisse la linea powercfg, ma anche questo non è abbastanza buono!

questo è davvero frustrante poiché sto eseguendo Win7 Ultimate su una partizione da 60 GB.

nel mio prossimo esperimento giocherò con la chiave di registro "HiberFileSizePercent" sotto:

HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Potenza

e vedere se ciò potrebbe costringerlo a (ri) creare almeno un file più piccolo.

f.


+1 - Questa è probabilmente una buona idea. Mi sono imbattuto in questa stessa soluzione mentre aiutavo un altro utente con i suoi problemi di ibernazione non correlati.
SgtOJ,

Non ho mai finito per risolvere questo. Ho eseguito uno script di accesso per un po ', ma era traballante, e alla fine ho finito per acquistare un disco più grande e lasciare il file hiberfil.sys in posizione. Ti auguro buona fortuna e seguirò questa discussione. Se hai successo, ti preghiamo di inviare di nuovo!
Corey White il

È inoltre possibile eliminare hiberfil.sysdopo aver disabilitato l'ibernazione e quindi creare una directory denominata hiberfil.sys. Non puoi avere un file e una directory nella stessa directory con lo stesso nome, quindi Windows non sarà in grado di creare un file chiamato hiberfil.sys. Naturalmente, MS potrebbe averne tenuto conto e potrebbe creare un altro file (hiberfi2.sys?) O potrebbe lamentarsi ad alta voce.
Pezzi di pancetta

@BaconBits: biziclop ha detto che non funziona; Windows sostituisce la cartella con il hiberfil.sysfile.
bwDraco - Ripristina Monica il

1

Non una soluzione, ma una soluzione alternativa che ha funzionato per me:

Avevo solo 900 MB di spazio libero sul mio disco C e volevo sbarazzarmi del file hiberfil.sys, che richiedeva più di 6 GB. Quindi l'ho rimosso con powercfg -h. Ma continuava a tornare dopo circa 10 secondi o qualcosa del genere. Penso che abbia qualcosa a che fare con PointSec perché è stato menzionato prima qui.

Quindi ho disabilitato l'ibernazione, quindi ho copiato rapidamente un file da 1 GB sull'unità C. Ora non ritorna e mi restano ancora 6 GB di spazio. Immagino che stia ancora cercando di abilitare l'ibernazione e scopre che non c'è più spazio sufficiente per quello. E la prossima volta che esaurisco lo spazio sull'unità C, posso ancora eliminare il file da 1 GB.


0

Forse ricrearlo manualmente dopo la rimozione e impostare le autorizzazioni per impedire al sistema di modificare il file? Lo so, è un colpo lungo.

Questo potrebbe essere causato da una partizione di ripristino o simile?


0

Ho una soluzione alternativa che sembra funzionare bene per me (anche se forse non tutti). Da quello che ho raccolto, vmtoolsd.exe disabilita l'ibernazione quando si avvia in VMware e quindi lo riattiva (indipendentemente dallo stato precedente) quando si avvia in modo nativo. Poiché gli strumenti VMware non sono necessari durante l'esecuzione nativa (Boot Camp), ho creato un file batch contenente quanto segue:

@echo off

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

:enable
net start "VMware Tools"

:end

Ho impostato il servizio VMware Tools su Manuale (anziché automatico) e ho creato un'attività in Utilità di pianificazione. L'attività è impostata come segue:

  • Esegui se l'utente ha effettuato l'accesso o meno
  • Esegui con i più alti privilegi
  • Nascosto (potrebbe non essere necessario)
  • Trigger: all'avvio del sistema
  • Azioni: il file batch sopra
  • Deseleziona tutto in Condizioni / Impostazioni (potrebbe non essere necessario)

NOTA: poiché mi affido a NUMBER_OF_PROCESSORS per differire da quando avviato in modo nativo, questo funzionerà solo se non hai la macchina virtuale con lo stesso numero di processori (logici, non fisici) sul tuo Mac.

Inoltre, il file batch può essere semplificato per:

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

Ho avuto alcune cose nel file batch per il debug / test e l'ho tenuto.


ot, ma avere un controllo di uguaglianza e 2 gotos sovrapposti come quello fa male ai miei sensi estetici quando potresti semplicemente avere un non-uguale e 1 goto.
underscore_d

0

Come ha detto oKtosiTe, ho provato questo approccio subdolo poiché nient'altro ha funzionato per me. ProcessMonitor ha semplicemente mostrato che la voce nel registro è stata creata da powercfg.exesola.

Non posso semplicemente disabilitare / rinominare o rimuoverlo.

Probabilmente a causa delle politiche del gruppo che sono in tutto il mio laptop (laptop aziendale -> politiche di sicurezza super stupide dell'azienda!).

Quindi ho eseguito il comando, sono hiberfile.sysscomparso per un paio di secondi, ho copiato il file chiamato hiberfile.sysda un'altra posizione (creato nell'editor e di 1 KB di dimensione) e ho cambiato i permessi di sola lettura (proprietà del file).

Ha fatto la magia!

Quindi in breve:

  1. Esegui in cmd powercfg -h off
  2. Copia hiberfile.sys preparato
  3. Proprietà -> sola lettura

Fatto!

Nota: senza cambiare il file di autorizzazione, nel mio caso ricrescere a circa 6 GB.

hiberfile.sys ora solo 1KB


0

Il merito va a @Tom Wijsman.

Il mio problema specifico riguarda il Wake-On-LAN bloccato dall'ibernazione, dettagli qui: Come disabilitare permanentemente l'ibernazione su Windows 10?

Ho seguito il suo metodo e ho ottenuto il registro di avvio.

Nel mio caso, è quello vmtoolsd.exeche ha mantenuto l'impostazione al di sotto del valore di registro su 1, che ha battuto totalmente il powercfg /h off.

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Power\HibernateEnabled

Il vmtoolsd.exeappartiene a VMware Tools.

Dopo averlo disinstallato, hiberfil.sysnon è mai stato ricreato.


-2

Mezza risposta:

Su Windows XP, questa era una soluzione semplice e permanente:

  1. elimina hiberfil.sys con questo comando (con diritti di amministratore): powercfg -h off

  2. crea una cartella chiamata "hiberfil.sys" in C: \

Sfortunatamente, Win7 è "più intelligente" di XP e uccide questa cartella, ignorando qualsiasi combinazione di proprietà / autorizzazione che ho provato. Ma a volte la mia cartella hiberfil.sys è sopravvissuta a un singolo riavvio senza essere sostituita. È anche interessante che il sistema sembrasse rigenerare il file originale dopo pochi secondi la finestra di C: \ apparve sul desktop.

E grazie per il mio primo voto negativo :)


Potrebbe non essere una cattiva idea: potresti impostare le sue autorizzazioni in modo che nemmeno il sistema possa eliminarlo (senza prima cambiare le sue autorizzazioni). Ovviamente, win7 potrebbe semplicemente rifiutarsi di avviarsi.
Hugh Allen,

@Hugh: è possibile che il codice di ibernazione, essendo parte del kernel, ignori semplicemente gli ACL.
user1686
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.