Hibernate est désactivé, hiberfil.sys est recréé à chaque démarrage

20

J'ai Windows 7 fonctionnant sur une petite partition (40 Go), avec 4 Go de RAM. Cela signifie que le fichier hiberfil.sys créé par Hibernate occupe une partie importante de l'espace disque disponible. Je voudrais le supprimer.

Je suis conscient que je peux désactiver Hibernate et supprimer hiberfil.sys en entrant powercfg -h offdans une invite de commande élevée. Cela fonctionne - le fichier est immédiatement supprimé et après cela, la HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Power\HibernateEnabledclé est (correctement) définie sur 0.

Cependant, la prochaine fois que je redémarre le PC, hiberfil.sys revient d'entre les morts, Hibernate est réactivé et cette clé de registre est revenue à 1.

Je suis à peu près à bout de ça avec ça. Presque tout ce que je peux trouver en ligne concernant la suppression du fichier hiberfil.sys suggère simplement d'utiliser powercfg pour désactiver l'hibernation, et cela semble fonctionner pour à peu près tout le monde. Mais ça revient toujours pour moi! (Comme un vampire, aspirant mon espace disque.) J'ai trouvé un autre fil de quelqu'un qui semble avoir eu le même problème, mais aucune des suggestions n'a fonctionné pour l'affiche originale (ou pour moi). Pourtant, j'ai essayé tout ce qui y figure, y compris:

  • Désactiver le sommeil hybride

  • Désactivation de la mise en veille prolongée via l'invite de commande, via l'interface graphique des options d'alimentation et via les deux (dans les deux ordres)

  • Changer manuellement la HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Power\HibernateEnabledclé

  • À peu près tout le reste auquel je peux penser!

Je tiens à répéter que je n'ai aucun problème à supprimer le fichier - cela fonctionne très bien. Il revient juste après chaque redémarrage. Je suis sur le point de jeter l'éponge et d'exécuter un script à la connexion pour désactiver Hibernate à chaque fois, même si cela semble être une "solution" incroyablement hacky. . . mais j'espérais que quelqu'un ici pourrait suggérer autre chose, d'abord.

Corey White
la source
Vous devez disposer d'un logiciel de sécurité pour surveiller et protéger le registre.
Moab
1
Étant donné la durée de cette question, et étant donné qu'il s'agit peut-être d'un problème courant, j'ai mis à profit cette question.
bwDraco
Vous n'avez pas installé un logiciel de démarrage personnalisé qui ferait cela, n'est-ce pas?
Mehrdad

Réponses:

18

Mon installation de Windows 7x64 se fait sur une partition SSD sur un ordinateur portable Mac. J'ai désactivé avec powercfg / h off (élevé) et la désactivation de la mise en veille prolongée de ms fixit, ainsi que la valeur de la clé de registre HibernateEnable à 0. Hiberfil.sys est supprimé uniquement jusqu'au redémarrage. Lorsque je démarre natif hiberfil.sys est toujours recréé, mais lorsque je démarre dans OS X et VMware Fusion, l'hibernation reste désactivée, comme il se doit.

La suggestion de Tom Wijsman de ProcessMonitor avec la journalisation de démarrage m'a aidé à trouver que vmtoolsd.exe (de VMware) réactivait la clé de registre pendant le démarrage natif. J'ai essayé de changer les autorisations dans regedit, mais elles n'ont pas arrêté le changement de valeur à 1. J'ai pensé à créer un petit hiberfil.sys, mais je pense que cela aurait été écrasé.

En tant que solution à 99%, j'ai changé la valeur HiberFileSizePercent en décimal 1, ce qui rend le hiberfil.sys seulement 80 Mo sur une machine RAM de 8 Go. Je suppose que je pourrais essayer 0,001 ou moins, mais 80 Mo, ce n'est pas beaucoup.

greenfellow
la source
1
Merci - je suis sur un Macbook avec Bootcamp et VMWare Fusion aussi, vous m'avez probablement fait gagner des heures.
DanB
13

Vous pouvez facilement résoudre ce problème avec Process Monitor .

Démarrez-le et activez Boot Logging dans le menu Options , redémarrez votre ordinateur et démarrez Process Monitor.

Ensuite, laissez-le arrêter la capture, puis recherchez HibernateEnabledet vérifiez ce qui a changé la valeur.


Pour des informations plus avancées, cela peut également être fait avec XBootMgr à partir de Windows Performance Toolkit.

Instructions d'installation - Document d'analyse des performances de transition marche / arrêt

Tamara Wijsman
la source
3
Comme votre réponse a le plus de chances de résoudre le problème, j'ai décidé de vous accorder la prime.
bwDraco
Cette méthode a résolu mon problème. Merci! (Mon problème concerne le Wake-On-LAN, détails ici: superuser.com/questions/1405082/… )
smwikipedia
6

Si vous utilisez Boot Camp et VMware Fusion:

Recherchez le fichier% programfiles% \ VMware \ VMware Tools \ plugins \ vmsvc \ disableGuestHibernate.dll, supprimez-le ou déplacez-le.

Enfin, désactivez l'hibernation une fois pour toutes en ouvrant une invite de commandes administrateur élevée et en exécutant:

powercfg -h off

Le plugin disableGuestHibernate se charge lors du chargement des outils vmware. Si vmware tools se charge lors de son exécution dans un vm, il désactivera l'hibernation (puisque vmware a son propre système de suspension, ce qui rend l'hibernation redondante.) réactivez l'hibernation si elle est désactivée.

themaninblack
la source
C'est une excellente réponse et bien détaillée. Si je pouvais lui donner 10 votes positifs, je le ferais!
Rijk
Soit dit en passant: simplement le renommer ne fonctionne pas, vous devez vraiment supprimer la DLL.
Rijk
Cela me l'a également corrigé. Upvote!
MortenRøgenes
4

Vous pouvez essayer d'activer et de désactiver la mise en veille prolongée. Dans cmd "Exécuter en tant qu'administrateur", procédez comme suit:

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

Si vous utilisez un ordinateur portable, après avoir mis en veille prolongée et avant de le désactiver, procédez également comme suit:

  1. Assurez-vous que le sommeil hybride est désactivé.
  2. Options d'alimentation → Modifier les paramètres du plan → Modifier les paramètres d'alimentation avancés, étendre Veille et modifier la valeur de "Sur batterie" et "Branché" à 0 minutes.

image

harrymc
la source
2

J'ai eu le même problème. A tenté:

powercfg –H OFF

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

Réglez Control Panel\All Control Panel Items\Power Options\Edit Plan Settingssur Jamais pour toutes les options d'alimentation.

Et le dossier revenait à la vie. Les conseils d'utilisation du moniteur de processus ont fait l'affaire pour moi. Le système que j'utilise a "Pointsec pour PC" installé, et le processus prot_srv.exe a continué à réinitialiser cette valeur. Étant donné que ce PC est verrouillé avec ce logiciel, je ne peux pas faire grand-chose.

TryingToHelp
la source
1

même chose ici!

par frustration, j'ai même configuré la politique locale de telle sorte qu'elle exécuterait un cmd au démarrage de la machine qui exécuterait la ligne powercfg, mais même cela ne suffit pas!

c'est vraiment frustrant car j'utilise Win7 Ultimate sur une partition de 60 Go.

dans ma prochaine expérience, je jouerai avec la clé de registre "HiberFileSizePercent" sous:

HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Power

et voyez si cela pourrait le forcer à (re) créer un fichier plus petit au moins.

F.

Franc
la source
+1 - C'est probablement une bonne idée. J'ai rencontré cette même solution tout en aidant un autre utilisateur à résoudre ses problèmes d'hibernation non liés.
SgtOJ
Je n'ai jamais fini par résoudre ça. J'ai exécuté un script de connexion pendant un certain temps, mais il était instable, et j'ai fini par acheter un disque plus gros et en laissant le fichier hiberfil.sys en place. Je vous souhaite bonne chance et je vais suivre ce fil. Si vous réussissez, merci de poster!
Corey White
Vous pouvez également supprimer hiberfil.sysaprès avoir désactivé l'hibernation, puis créer un répertoire appelé hiberfil.sys. Vous ne pouvez pas avoir un fichier et un répertoire dans le même répertoire avec le même nom, donc Windows ne pourra pas créer un fichier appelé hiberfil.sys. Bien sûr, MS aurait pu expliquer cela et il pourrait créer un autre fichier (hiberfi2.sys?) Ou il pourrait s'en plaindre fortement.
Bacon Bits
@BaconBits: biziclop a dit que cela ne fonctionnait pas; Windows remplace le dossier par le hiberfil.sysfichier.
bwDraco
1

Pas une solution, mais une solution de contournement qui a fonctionné pour moi:

Je n'avais que 900 Mo d'espace libre sur mon lecteur C et je voulais me débarrasser du fichier hiberfil.sys, qui prenait plus de 6 Go. Je l'ai donc supprimé avec powercfg -h. Mais il a juste continué à revenir après environ 10 secondes ou quelque chose. Je pense que cela a quelque chose à voir avec PointSec parce que cela a été mentionné plus tôt ici.

Ensuite, j'ai désactivé l'hibernation, puis copié rapidement un fichier de 1 Go sur le lecteur C. Maintenant, il ne revient pas et il me reste encore 6 Go d'espace. Je suppose qu'il essaie toujours d'activer l'hibernation et constate qu'il n'y a plus assez d'espace pour cela. Et la prochaine fois que je manquerai d'espace sur le lecteur C, je pourrai toujours supprimer le fichier 1 Go.

Roberg
la source
0

Peut-être le recréer manuellement après la suppression et définir des autorisations pour interdire au système de modifier le fichier? Je sais, c'est un long plan.

Cela pourrait-il être causé par une partition de restauration ou similaire?

oKtosiTe
la source
0

J'ai une solution de contournement qui semble fonctionner très bien pour moi (cependant, peut-être pas tout le monde). D'après ce que j'ai rassemblé, vmtoolsd.exe désactive l'hibernation lors du démarrage sous VMware, puis le réactive (quel que soit l'état précédent) lors du démarrage natif. Étant donné que VMware Tools n'est pas nécessaire lors de l'exécution native (Boot Camp), j'ai créé un fichier de commandes contenant les éléments suivants:

@echo off

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

:enable
net start "VMware Tools"

:end

J'ai défini le service VMware Tools sur Manuel (plutôt qu'automatique) et créé une tâche dans le Planificateur de tâches. La tâche est configurée comme suit:

  • Exécuter, que l'utilisateur soit connecté ou non
  • Exécutez avec les privilèges les plus élevés
  • Caché (peut ne pas être nécessaire)
  • Déclencheurs: au démarrage du système
  • Actions: le fichier batch ci-dessus
  • Décochez tout dans Conditions / Paramètres (peut ne pas être nécessaire)

REMARQUE: étant donné que je compte sur les NUMBER_OF_PROCESSORS pour différer du démarrage en mode natif, cela ne fonctionnera que si la machine virtuelle ne dispose pas du même nombre de processeurs (logiques et non physiques) sur votre Mac.

De plus, le fichier de commandes peut être simplifié pour:

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

J'avais quelques éléments dans le fichier de commandes pour le débogage / test et je les ai simplement conservés.

Brandon Crawford
la source
ot, mais avoir un contrôle d'égalité et 2 gotos qui se chevauchent comme ça fait mal à mes sens esthétiques quand vous pourriez juste avoir un non-égal et 1 goto.
underscore_d
0

Comme l'a dit oKtosiTe, j'ai essayé cette approche sournoise car rien d'autre ne fonctionnait pour moi. ProcessMonitor a simplement montré que l'entrée dans le registre est créée par powercfg.exeelle-même.

Je ne peux pas simplement désactiver / renommer ou supprimer.

Probablement en raison des politiques de groupe qui sont partout sur mon ordinateur portable (ordinateur portable de l'entreprise -> politiques de sécurité super stupides de l'entreprise!).

J'ai donc exécuté la commande, hiberfile.sysdisparu pendant quelques secondes, fichier copié nomméhiberfile.sys d'un autre endroit (créé dans l'éditeur et 1 Ko de taille) et modifié ses autorisations en lecture seule (propriétés du fichier).

A fait la magie!

Bref:

  1. Exécuter en cmd powercfg -h off
  2. Copier le fichier hiberfile.sys préparé
  3. Propriétés -> lecture seule

Terminé!

Remarque: sans changer le fichier d'autorisation repousser à environ 6 Go dans mon cas.

hiberfile.sys seulement 1Ko maintenant

yrk
la source
0

Nous remercions @Tom Wijsman.

Mon problème spécifique concerne le Wake-On-LAN bloqué par l'hibernation, détails ici: Comment désactiver définitivement l'hibernation sur Windows 10?

J'ai suivi sa méthode et récupéré le journal de démarrage.

Dans mon cas, c'est le vmtoolsd.exeparamètre qui a maintenu la valeur de registre à 1, qui a totalement battu le powercfg /h off.

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Power\HibernateEnabled

L' vmtoolsd.exeappartient à VMware Tools.

Après l'avoir désinstallé, le hiberfil.sysn'a jamais été recréé.

smwikipedia
la source
-2

Demi-réponse:

Sur Windows XP, c'était une solution simple et permanente:

  1. supprimez hiberfil.sys avec cette commande (avec les droits d'administrateur): powercfg -h off

  2. créer un dossier appelé "hiberfil.sys" dans C: \

Malheureusement, Win7 est "plus intelligent" que XP et tue ce dossier, ignorant toute combinaison propriété / autorisation que j'ai essayée. Mais parfois, mon dossier hiberfil.sys a survécu à un seul redémarrage sans être remplacé. Il est également intéressant de noter que le système a semblé régénérer le fichier d'origine après quelques secondes, la fenêtre de C: \ est apparue sur le bureau.

Et merci pour mon premier downvote :)

user188421
la source
Ce n'est peut-être pas une si mauvaise idée - vous pouvez définir ses autorisations de sorte que même le système ne puisse pas le supprimer (sans d'abord changer ses autorisations). Bien sûr, win7 pourrait simplement refuser de démarrer.
Hugh Allen
@ Hugh: Il est possible que le code d'hibernation, faisant partie du noyau, ignore simplement les ACL.
user1686