Ruhezustand ist deaktiviert, hiberfil.sys wird bei jedem Start neu erstellt


20

Ich habe Windows 7 auf einer kleinen (40 GB) Partition mit 4 GB RAM. Dies bedeutet, dass die von Hibernate erstellte Datei hiberfil.sys einen erheblichen Teil des verfügbaren Speicherplatzes einnimmt. Ich möchte es entfernen.

Mir ist bekannt, dass ich den Ruhezustand deaktivieren und hiberfil.sys entfernen kann, indem ich powercfg -h offeine Eingabeaufforderung mit erhöhten Rechten eingebe . Dies funktioniert - die Datei wird sofort entfernt, und danach wird der HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Power\HibernateEnabledSchlüssel (korrekt) auf 0 gesetzt.

Wenn ich den PC das nächste Mal neu starte, kehrt hiberfil.sys von den Toten zurück, der Ruhezustand wird wieder aktiviert und dieser Registrierungsschlüssel ist auf 1 zurückgekehrt.

Damit bin ich ziemlich am Ende. Fast alles, was ich online im Zusammenhang mit dem Entfernen der Datei hiberfil.sys finden kann, schlägt einfach vor, den Ruhezustand mit powercfg zu deaktivieren, und das scheint für fast alle zu funktionieren. Aber es kommt immer wieder für mich! (Wie ein Vampir, der meinen Speicherplatz aufgebraucht hat.) Ich habe einen anderen Thread von jemandem gefunden, der anscheinend dasselbe Problem hatte, aber keiner der Vorschläge dort hat für das Original-Poster (oder für mich) funktioniert. Trotzdem habe ich alles ausprobiert, einschließlich:

  • Hybrid-Schlaf deaktivieren

  • Deaktivieren des Ruhezustands über die Eingabeaufforderung, die Benutzeroberfläche für Energieoptionen und über beide (in beiden Befehlen)

  • Manuelles Ändern des HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Power\HibernateEnabledSchlüssels

  • So ziemlich alles, was mir sonst noch einfällt!

Ich möchte noch einmal betonen, dass ich kein Problem damit habe, die Datei zu entfernen - das funktioniert hervorragend. Es kommt nur nach jedem Neustart zurück. Ich bin kurz davor, das Handtuch zu werfen und bei der Anmeldung einfach ein Skript auszuführen, um den Ruhezustand jedes Mal zu deaktivieren, auch wenn das wie eine verrückte "Lösung" aussieht. . . aber ich hatte gehofft, dass jemand hier zuerst etwas anderes vorschlagen könnte.


Sie müssen über eine Sicherheitssoftware verfügen, die die Registrierung überwacht und schützt.
Moab,

1
In Anbetracht dessen, wie lange diese Frage dort gestanden hat und da dies ein weit verbreitetes Problem sein könnte, habe ich diese Frage mit einem Kopfgeld belegt.
bwDraco

Sie haben zufällig keine angepasste Boot-Software installiert, die dies tun würde, oder?
Mehrdad

Antworten:


18

Meine Windows 7x64-Installation befindet sich auf einer SSD-Partition auf einem Mac-Laptop. Ich habe mit PowerCFG / h aus (erhöht) und MS Fixit deaktivieren Ruhezustand sowie die Einstellung Registrierungsschlüssel HibernateEnable Wert auf 0 deaktiviert. Hiberfil.sys wird nur bis zum Neustart gelöscht. Wenn ich native hiberfil.sys starte, wird diese immer neu erstellt, aber wenn ich in OS X und VMware Fusion starte, bleibt der Ruhezustand deaktiviert, wie es sein sollte.

Tom Wijsmans Vorschlag von ProcessMonitor mit Boot-Protokollierung hat mir geholfen, festzustellen, dass vmtoolsd.exe (von VMware) den Registrierungsschlüssel während des systemeigenen Bootvorgangs wieder aktiviert hat. Ich habe versucht, die Berechtigungen in regedit zu ändern, aber sie haben die Wertänderung in 1 nicht gestoppt. Ich habe darüber nachgedacht, eine kleine hiberfil.sys zu erstellen, aber ich denke, das wäre überschrieben worden.

Als 99% ige Lösung habe ich den HiberFileSizePercent-Wert in Dezimal 1 geändert, wodurch die hiberfil.sys auf einem 8-GB-RAM-Computer nur 80 MB groß ist. Ich vermute, ich könnte es mit 0,001 oder weniger versuchen, aber 80 MB sind nicht viel.


1
Vielen Dank - ich bin auch mit Bootcamp und VMWare Fusion auf einem Macbook, wahrscheinlich haben Sie mir Stunden gespart.
DanB

13

Sie können dies problemlos mit Process Monitor beheben .

Starten Sie es und aktivieren Sie die Startprotokollierung im Menü Optionen , starten Sie den Computer neu und starten Sie Process Monitor.

Lassen Sie es dann aufhören zu erfassen und suchen HibernateEnabledund überprüfen Sie, was den Wert geändert hat.


Für erweiterte Einblicke kann dies auch mit XBootMgr aus dem Windows Performance Toolkit erfolgen.

Installationsanweisungen - On / Off Transition Performance Analysis Document


3
Da Ihre Antwort das größte Potenzial zur Lösung des Problems hat, habe ich beschlossen, die Prämie an Sie zu vergeben.
bwDraco

Diese Methode hat mein Problem gelöst. Vielen Dank! (Mein Problem ist , über den Wake-On-LAN, Details hier: superuser.com/questions/1405082/... )
smwikipedia

6

Wenn Sie Boot Camp und VMware Fusion verwenden:

Suchen Sie die Datei% programfiles% \ VMware \ VMware Tools \ plugins \ vmsvc \ disableGuestHibernate.dll, löschen Sie sie oder verschieben Sie sie.

Deaktivieren Sie zum Schluss den Ruhezustand ein für alle Mal, indem Sie die Eingabeaufforderungen eines Administrators mit erhöhten Rechten öffnen und ausführen:

powercfg -h aus

Das disableGuestHibernate-Plugin wird geladen, wenn VMware Tools geladen wird. Wenn VMware Tools geladen werden, während sie in einer VM ausgeführt werden, wird der Ruhezustand deaktiviert (da VMware über ein eigenes Suspend-System verfügt, das den Ruhezustand überflüssig macht.) Wenn VMware Tools jedoch außerhalb einer VM geladen wird (dh Sie verwenden Boot Camp, um stattdessen Windows zu starten), wird dies der Fall sein Aktivieren Sie den Ruhezustand erneut, wenn er deaktiviert ist.


Dies ist eine gute Antwort und gut detailliert. Wenn ich 10 Upvotes geben könnte, würde ich!
Rijk

Übrigens: einfach umbenennen geht nicht, man muss die dll wirklich entfernen.
Rijk

Das hat es auch für mich behoben. Upvote!
MortenRøgenes

4

Sie können versuchen, den Ruhezustand wieder ein- und auszuschalten. Führen Sie in cmd "Als Administrator ausführen" Folgendes aus:

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

Wenn Sie einen Laptop verwenden, gehen Sie nach dem Einschalten und vor dem Ausschalten des Ruhezustands wie folgt vor:

  1. Stellen Sie sicher, dass der Hybridschlaf deaktiviert ist.
  2. Energieoptionen → Planeinstellungen ändern → Erweiterte Energieeinstellungen ändern, Energiesparmodus erweitern und den Wert für "Auf Batterie" und "Eingesteckt" auf 0 Minuten ändern.

Bild


2

Ich hatte das gleiche problem Versucht:

powercfg –H OFF

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

Stellen Sie Control Panel\All Control Panel Items\Power Options\Edit Plan Settingsfür alle Energieoptionen Nie ein.

Und die Akte wurde immer wieder lebendiger. Der Ratschlag, Prozessmonitor zu verwenden, hat mir geholfen. Auf dem von mir verwendeten System ist "Pointsec für PC" installiert, und der Prozess prot_srv.exe hat diesen Wert weiterhin zurückgesetzt. Da dieser PC mit dieser Software gesperrt ist, kann ich nicht viel tun.


1

Das selbe hier!

aus frust habe ich sogar die lokale richtlinie so konfiguriert, dass beim maschinenstart eine cmd ausgeführt wird, die die powercfg-zeile ausführt, aber selbst das ist nicht gut genug!

Das ist wirklich frustrierend, da ich Win7 Ultimate auf einer 60-GB-Partition ausführe.

In meinem nächsten Experiment spiele ich mit dem Registrierungsschlüssel "HiberFileSizePercent" unter:

HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Power

und prüfen Sie, ob dies dazu führen könnte, dass mindestens eine kleinere Datei (neu) erstellt wird.

f.


+1 - Das ist wahrscheinlich eine gute Idee. Ich bin auf dieselbe Lösung gestoßen, als ich einem anderen Benutzer bei seinen Problemen mit dem Ruhezustand geholfen habe.
SgtOJ

Ich habe das nie gelöst. Ich habe eine Zeit lang ein Anmeldeskript ausgeführt, aber es war unzuverlässig, und schließlich habe ich einfach ein größeres Laufwerk gekauft und die Datei hiberfil.sys an Ort und Stelle belassen. Ich wünsche Ihnen viel Glück und werde diesem Thread folgen. Wenn Sie erfolgreich sind, senden Sie bitte zurück!
Corey White

Sie können auch löschen, hiberfil.sysnachdem Sie den Ruhezustand deaktiviert haben, und dann ein Verzeichnis mit dem Namen hiberfil.sys erstellen. Sie können keine Datei und kein Verzeichnis im selben Verzeichnis mit demselben Namen haben, sodass Windows keine Datei mit dem Namen hiberfil.sys erstellen kann. Natürlich könnte MS das berücksichtigt haben und eine andere Datei (hiberfi2.sys?) Erstellen oder sich lautstark darüber beschweren.
Bacon Bits

@ BaconBits: biziclop sagte, dass dies nicht funktioniert; Windows ersetzt den Ordner durch die hiberfil.sysDatei.
bwDraco

1

Keine Lösung, aber ein Workaround, der für mich funktioniert hat:

Ich hatte nur 900 MB freien Speicherplatz auf meinem C-Laufwerk und wollte die Datei hiberfil.sys entfernen, die mehr als 6 GB benötigte. Also habe ich es mit powercfg -h entfernt. Aber es kam nur nach ungefähr 10 Sekunden wieder oder so. Ich denke, es hat etwas mit PointSec zu tun, weil das hier bereits erwähnt wurde.

Dann deaktivierte ich den Ruhezustand und kopierte schnell eine 1-GB-Datei auf das C-Laufwerk. Jetzt kommt es nicht wieder und ich habe noch 6 GB freien Speicherplatz. Ich denke, es wird immer noch versucht, den Ruhezustand zu aktivieren, und es ist nicht mehr genügend Platz dafür vorhanden. Und wenn mir das nächste Mal der Speicherplatz auf dem C-Laufwerk ausgeht, kann ich die 1-GB-Datei trotzdem löschen.


0

Erstellen Sie es möglicherweise nach dem Entfernen manuell neu, und legen Sie die Berechtigungen fest, um zu verhindern, dass das System die Datei ändert? Ich weiß, es ist ein langer Schuß.

Könnte dies durch eine Wiederherstellungspartition oder ähnliches verursacht werden?


0

Ich habe eine Problemumgehung, die für mich in Ordnung zu sein scheint (obwohl vielleicht nicht jeder). Von dem, was ich gesammelt habe, deaktiviert vmtoolsd.exe den Ruhezustand beim Booten unter VMware und aktiviert ihn dann (unabhängig vom vorherigen Status) beim nativen Booten wieder. Da VMware Tools beim Ausführen von native (Boot Camp) nicht erforderlich sind, habe ich eine Batch-Datei erstellt, die Folgendes enthält:

@echo off

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

:enable
net start "VMware Tools"

:end

Ich habe den VMware Tools-Dienst auf Manuell (und nicht auf Automatisch) eingestellt und im Taskplaner eine Aufgabe erstellt. Die Aufgabe ist wie folgt aufgebaut:

  • Führen Sie aus, ob der Benutzer angemeldet ist oder nicht
  • Führen Sie mit den höchsten Berechtigungen
  • Versteckt (möglicherweise nicht erforderlich)
  • Auslöser: beim Systemstart
  • Aktionen: die obige Batch-Datei
  • Deaktivieren Sie alles in den Bedingungen / Einstellungen (möglicherweise nicht erforderlich)

ANMERKUNG: Da ich mich darauf verlasse, dass sich NUMBER_OF_PROCESSORS vom nativen Start unterscheidet, funktioniert dies nur, wenn der virtuellen Maschine nicht die gleiche Anzahl von Prozessoren (logisch, nicht physisch) auf Ihrem Mac zugewiesen wurde.

Die Batch-Datei kann auch vereinfacht werden, um:

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

Ich hatte ein paar Dinge in der Batch-Datei zum Debuggen / Testen und habe sie einfach behalten.


ot, aber eine Gleichheitsprüfung und 2 überlappende gotos wie das zu haben, schadet meinen ästhetischen Sinnen, wenn du nur eine ungleiche und 1 haben könntest goto.
Underscore_d

0

Wie bereits erwähnt, habe ich diesen hinterhältigen Ansatz ausprobiert, da für mich nichts anderes funktioniert hat. ProcessMonitor hat lediglich gezeigt, dass der Eintrag in der Registrierung von powercfg.exeselbst erstellt wird .

Ich kann es nicht einfach deaktivieren / umbenennen oder entfernen.

Wahrscheinlich aufgrund von Gruppenrichtlinien, die sich auf meinem ganzen Laptop befinden (Firmenlaptop -> Firmensuper dumme Sicherheitsrichtlinien!).

Also habe ich den Befehl ausgeführt, bin hiberfile.sysfür ein paar Sekunden verschwunden, habe die Datei mit dem Namen hiberfile.sysvon einem anderen Ort kopiert (im Editor erstellt und 1 KB groß) und die Berechtigung zum Lesen geändert (Eigenschaften der Datei).

Hat die Magie!

Also in Kürze:

  1. Führen Sie in cmd powercfg -h off
  2. Kopieren Sie die vorbereitete Datei hiberfile.sys
  3. Eigenschaften -> schreibgeschützt

Getan!

Hinweis: Ohne Änderung der Berechtigungsdatei wird in meinem Fall auf ca. 6 GB zurückgewachsen.

hiberfile.sys jetzt nur 1KB


0

Der Kredit geht an @Tom Wijsman.

Mein spezielles Problem betrifft das Wake-On-LAN, das durch den Ruhezustand blockiert wurde. Weitere Informationen finden Sie hier: Wie kann der Ruhezustand unter Windows 10 dauerhaft deaktiviert werden?

Ich folgte seiner Methode und holte das Boot-Protokoll.

In meinem Fall ist es die vmtoolsd.exeEinstellung unterhalb des Registrierungswerts auf 1, die das total übertrifft powercfg /h off.

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Power\HibernateEnabled

Das vmtoolsd.exegehört dazu VMware Tools.

Nachdem ich es deinstalliert habe, hiberfil.syswurde das nie neu erstellt.


-2

Halbe Antwort:

Unter Windows XP war dies eine einfache und dauerhafte Lösung:

  1. lösche hiberfil.sys mit diesem Befehl (mit Administratorrechten): powercfg -h off

  2. Erstellen Sie einen Ordner mit dem Namen "hiberfil.sys" unter C: \

Leider ist Win7 "schlauer" als XP und tötet diesen Ordner, wobei alle Kombinationen aus Besitz und Berechtigung, die ich ausprobiert habe, ignoriert werden. Aber manchmal hat mein Ordner hiberfil.sys einen einzelnen Neustart überstanden, ohne ersetzt zu werden. Es ist auch interessant, dass das System die ursprüngliche Datei nach ein paar Sekunden neu zu generieren schien, als das Fenster von C: \ auf dem Desktop erschien.

Und danke für meine erste Ablehnung :)


Das ist vielleicht keine so schlechte Idee - Sie können die Berechtigungen so festlegen, dass nicht einmal das System sie löschen kann (ohne zuerst die Berechtigungen zu ändern). Natürlich kann win7 das Booten einfach ablehnen.
Hugh Allen

@Hugh: Es ist möglich, dass der Ruhezustand-Code, der Teil des Kernels ist, ACLs einfach ignoriert.
Grawity
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.