Зимовий режим вимкнено, hiberfil.sys відтворюється під час кожного завантаження


20

У мене Windows 7 працює на невеликому (40 Гб) розділі, з 4 ГБ таран. Це означає, що файл hiberfil.sys, створений Hibernate, займає значну частину доступного дискового простору. Я хотів би її зняти.

Я усвідомлюю, що я можу відключити сплячку та видалити hiberfil.sys, ввівши powercfg -h offв командному рядку підвищений. Це працює - файл негайно видаляється, і після цього HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Power\HibernateEnabledключ (правильно) встановлюється на 0.

Однак наступного разу, коли я перезавантажую ПК, hiberfil.sys повертається з мертвих, режим гібернації знову відновлюється, і цей ключ реєстру повернувся до 1.

Я майже в цьому закінчую свою розум. Майже все, що я можу знайти в Інтернеті, пов’язане з видаленням файлу hiberfil.sys, просто пропонує використання powercfg для вимкнення сплячки, і це, здається, працює практично для всіх. Але це просто продовжує повертатися до мене! (Як вампір, висмоктуючи мій простір на диску.) Я знайшов ще одну тему у того, хто, схоже, мав те саме питання, але жодна з пропозицій там не працювала на оригінальному плакаті (або для мене). Все ж я спробував все, що перераховано там, включаючи:

  • Відключення гібридного сну

  • Вимкнення режиму глибокого сну через командний рядок, через GUI Параметри живлення та через обидва (в обох порядках)

  • Ручна зміна HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Power\HibernateEnabledключа

  • Досить все, що я можу придумати!

Я хочу ще раз зазначити, що у мене немає проблем з видаленням файлу - це чудово працює. Він просто повертається після кожного перезавантаження. Я збираюся кинути рушник і просто запустити скрипт на вході, щоб кожен раз відключати сплячку, хоча це здається божевільно хакізним «рішенням». . . але сподівався, що хтось тут спочатку може запропонувати щось інше.


Ви повинні мати певний моніторинг програмного забезпечення для захисту та захист реєстру.
Моаб

1
З огляду на те, як довго це питання там сидить, і оскільки це може бути поширеним питанням, я поставив щедро це питання.
bwDraco

У вас не буває встановлене програмне забезпечення для завантаження, яке б це зробило, чи не так?
Мехрдад

Відповіді:


18

Моя установка Windows 7x64 знаходиться на розділі SSD на ноутбуці Mac. Я відключив режим powercfg / h вимкнено (підвищений) та сплячий режим ms fixit, а також встановлення значення реєстру ключа HibernateEnable до значення 0. Hiberfil.sys видаляється лише до перезавантаження. Коли я завантажую натив hiberfil.sys, завжди створюється знову, але коли я завантажуюсь всередині OS X та VMware Fusion, сплячка залишається відключеною, як слід.

Пропозиція Тома Війсмана щодо ProcessMonitor з журналом завантаження допомогла мені виявити, що vmtoolsd.exe (від VMware) повторно включив ключ реєстру під час нативної завантаження. Я намагався змінити дозволи в regedit, але вони не зупинили зміну значення на 1. Я думав про створення невеликого сайту hiberfil.sys, але думаю, що це було б перезаписано.

Як 99% рішення, я змінив значення HiberFileSizePercent на десятковий 1, що робить hiberfil.sys лише 80 МБ на машині 8 Гб оперативної пам’яті. Я думаю, я міг би спробувати .001 або менше, але 80 МБ - це не так багато.


1
Дякую - я на Macbook із Bootcamp та VMWare Fusion теж, ви, ймовірно, заощадили мені години.
DanB

13

Ви можете легко вирішити це за допомогою монітора процесів .

Запустіть його та включіть журнал завантаження в меню « Параметри », перезавантажте комп'ютер та запустіть «Монітор процесів».

Потім дозвольте зупинити захоплення, а потім шукайте HibernateEnabledта перевіряйте, що змінило значення.


Для більш детальної інформації це також можна зробити за допомогою XBootMgr з інструментарію Windows Performance Toolkit.

Інструкції з установки - Документ з аналізу продуктивності переходу на вхід / вимкнення


3
Оскільки ваша відповідь має найбільший потенціал для вирішення проблеми, я вирішив присвоїти вам нагороду.
bwDraco

Цей метод вирішив мою проблему. Спасибі! (Моя проблема стосується Wake-On-LAN, детальніше тут: superuser.com/questions/1405082/… )
smwikipedia

6

Якщо ви використовуєте завантажувальний табір та vmware fusion:

Знайдіть файл% programfiles% \ VMware \ VMware Tools \ plugins \ vmsvc \ disabledGuestHibernate.dll видаліть або перемістіть його.

Нарешті, відключіть сплячку раз і назавжди, відкривши підняті адміністратором командні підказки та запустивши:

powercfg -h вимкнено

Плагін enableGuestHibernate завантажується, коли завантажується інструмент vmware. Якщо інструменти vmware завантажуються під час роботи в vm, він відключить сплячку (оскільки vmware має власну систему призупинення, що робить спячку зайвою.) Але якщо інструменти vmware завантажуються поза vm (тобто ви використовуєте завантажувальний табір для завантаження у Windows) повторно включити сплячку, якщо її вимкнено.


Це чудова відповідь і добре деталізована. Якби я міг дати це 10 оновлень, я б!
Рійк

До речі: просто перейменувавши це не працює, вам дійсно доведеться видалити dll.
Рійк

Це виправило і для мене. Оновлення!
MortenRøgenes

4

Ви можете спробувати знову ввімкнути і вимкнути сплячку. У cmd "Запустити як адміністратор" виконайте:

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

Якщо ви користуєтесь ноутбуком, після ввімкнення режиму сплячки та перед його вимкненням виконайте також наступне:

  1. Переконайтесь, що гібридний сон відключений.
  2. Опції живлення → Змінення налаштувань плану → Змінення розширених налаштувань живлення, розширення режиму сну та змінення значень «На батареї» та «Підключено» до 0 хвилин.

зображення


2

У мене була така ж проблема. Спробував:

powercfg –H OFF

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

Встановити Control Panel\All Control Panel Items\Power Options\Edit Plan SettingsНіколи для всіх параметрів живлення.

І файл продовжував оживати. Поради щодо використання монітора процесів зробили для мене хитрість. У системі, яку я використовую, встановлено "Pointsec для ПК", і процес prot_srv.exe продовжує скидати це значення. З огляду на те, що цей ПК заблокований за допомогою цього програмного забезпечення, я не можу багато чого зробити.


1

те ж саме тут!

з розчарування я навіть налаштував локальну політику таким чином, щоб вона запускала cmd при запуску машини, який би запускав лінію powercfg, але навіть це недостатньо добре!

це насправді засмучує, оскільки я запускаю Win7 Ultimate на розділі об'ємом 60 Гб.

у своєму наступному експерименті я зіграю ключ реєстру "HiberFileSizePercent" під:

HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Power

і подивіться, чи це може змусити його (принаймні) створити принаймні менший файл.

f.


+1 - це, мабуть, гарна ідея. Я зіткнувся з цим самим рішенням, допомагаючи іншому користувачеві з його непов’язаними проблемами зі сплячкою.
SgtOJ

Я ніколи не до кінця вирішував це. Я деякий час керував сценарієм входу, але він був лускатим, і врешті-решт я просто купив більший диск і залишив файл hiberfil.sys на місці. Бажаю тобі удачі, і я буду слідувати цій темі. Якщо ви досягли успіху, будь ласка, опублікуйте!
Корі Уайт

Ви також можете видалити hiberfil.sysпісля відключення сплячки, а потім створити каталог під назвою hiberfil.sys. Ви не можете мати файл і каталог в одному каталозі з тим самим іменем, тому Windows не зможе створити файл під назвою hiberfil.sys. Звичайно, MS може це врахувати, і це може створити інший файл (hiberfi2.sys?), Або він може голосно скаржитися на це.
Шматочки бекону

@BaconBits: biziclop сказав, що це не працює; Windows замінює папку hiberfil.sysфайлом.
bwDraco

1

Не рішення, а обхід, який працював на мене:

Я мав лише 900 МБ вільного місця на своєму диску C і хотів позбутися файлу hiberfil.sys, який займав більше 6 Гб. Тому я видалив його з powercfg -h. Але він просто повертався приблизно через 10 секунд чи щось. Я думаю, що це має щось спільне з PointSec, оскільки про це згадувалося раніше.

Потім я відключив сплячку, а потім швидко скопіював файл 1 Гб на диск C. Тепер він не повертається, і в мене ще 6 ГБ місця. Я думаю, що все ще намагається ввімкнути сплячку і виявляє, що для цього більше не вистачає місця. І наступного разу, коли мені не вистачить місця на диску C, я все одно можу видалити файл 1 Гб ..


0

Може бути вручну відтворити його після видалення та встановити дозволи, щоб заборонити системі змінювати файл? Я знаю, це довгий постріл.

Чи може це бути викликано відновленням розділу чи подібним?


0

У мене є рішення, яке, здається, працює для мене просто чудово (хоча, можливо, не у всіх). З того, що я зібрав, vmtoolsd.exe відключає сплячку під час завантаження під VMware, а потім повторно вмикає його (незалежно від попереднього стану) під час завантаження назви. Оскільки інструменти VMware не потрібні під час запуску нативного (Boot Camp), я створив пакетний файл, що містить:

@echo off

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

:enable
net start "VMware Tools"

:end

Я встановив службу VMware Tools вручну (а не автоматично) і створив завдання в Планувальнику завдань. Завдання встановлюється так:

  • Запустіть, чи користувач увійшов чи ні
  • Бігайте з найвищими привілеями
  • Приховано (можливо, не буде потрібно)
  • Тригери: при запуску системи
  • Дії: пакетний файл вище
  • Зніміть прапорець у розділі Умови / Налаштування (можливо, це не потрібно)

ПРИМІТКА. Оскільки я покладаюсь на NUMBER_OF_PROCESSORS, що відрізняється від завантаженої програми, це працює лише в тому випадку, якщо у вас на віртуальній машині віртуальна машина не має однакової кількості процесорів (логічних, а не фізичних).

Також пакетний файл можна спростити до:

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

Я мав кілька речей у пакетному файлі для налагодження / тестування і просто зберігав його.


от, але перевірка рівності та 2 gotoподібних накладення перешкоджають моїм естетичним почуттям, коли у вас просто може бути нерівне і 1 goto.
підкреслюй_

0

Як сказав oKtosiTe, я спробував цей підлий підхід, оскільки більше нічого для мене не працювало. ProcessMonitor просто показав, що запис в реєстр створює компаніяpowercfg.exe сам собою.

Я не можу просто відключити / перейменувати або видалити його.

Можливо, через групову політику, яка перебуває на моєму ноутбуці (компанія ноутбук -> компанія супер дурні політики безпеки!).

Тому я запустив команду, hiberfile.sysзник на пару секунд, скопіював ім’я файлуhiberfile.sys з іншого місця (створений у редакторі та розміром 1 Кб), і змінив його дозволи лише читати (властивості файлу).

Зробив магію!

Отже, коротше:

  1. Виконати в cmd powercfg -h off
  2. Скопіюйте підготовлений hiberfile.sys
  3. Властивості -> лише для читання

Готово!

Примітка: без зміни файлу дозволу в моєму випадку відновлюється приблизно 6 Гб.

hiberfile.sys зараз лише 1 КБ


0

Кредит належить @Tom Wijsman.

Моя конкретна проблема полягає в тому, що Wake-On-LAN заблокований сплячкою, тут детально: Як остаточно відключити сплячку в Windows 10?

Я дотримувався його методу і отримую журнал завантаження.

У моєму випадку, це vmtoolsd.exeзбережене значення нижче значення реєстру до 1, яке повністю перемогло значення powercfg /h off.

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Power\HibernateEnabled

vmtoolsd.exeналежитьVMware Tools .

Після того як я його видалив, файл так і hiberfil.sysне було створено.


-2

Половина відповіді:

У Windows XP це було простим і постійним рішенням:

  1. видаліть hiberfil.sys за допомогою цієї команди (з правами адміністратора): powercfg -h off

  2. створити папку "hiberfil.sys" на C: \

На жаль, Win7 "розумніший", ніж XP, і вбиває цю папку, ігноруючи будь-яку комбінацію власності / дозволу, яку я намагався. Але іноді моя папка hiberfil.sys переживала один перезапуск без заміни. Цікаво також те, що система, здавалося, відновила початковий файл через кілька секунд, на робочому столі з’явилося вікно C: \.

І дякую за мій перший відгук :)


Це може бути не так вже й поганою ідеєю - ви можете встановити його дозволи так, щоб навіть система не змогла її видалити (не попередньо змінивши свої дозволи). Звичайно, win7 може просто відмовитись від завантаження.
Х'ю Аллен

@Hugh: Можливо, що код сплячки, будучи частиною ядра, просто ігнорує ACL.
користувач1686
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.