Hibernasi dinonaktifkan, hiberfil.sys akan dibuat ulang di setiap boot

20

Saya memiliki Windows 7 yang berjalan pada partisi kecil (40GB), dengan ram 4GB. Ini berarti bahwa file hiberfil.sys yang dibuat oleh Hibernate mengambil sebagian besar ruang disk yang tersedia. Saya ingin menghapusnya.

Saya sadar bahwa saya dapat menonaktifkan Hibernate dan menghapus hiberfil.sys dengan memasukkan powercfg -h offcommand prompt yang tinggi. Ini berfungsi - file tersebut segera dihapus, dan setelah melakukannya, HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Power\HibernateEnabledkuncinya (dengan benar) diatur ke 0.

Namun, saat berikutnya saya me-reboot PC, hiberfil.sys kembali dari kematian, Hibernate diaktifkan kembali, dan kunci registri itu telah kembali ke 1.

Aku hampir kehabisan akal dengan ini. Hampir semua yang dapat saya temukan online terkait dengan menghapus file hiberfil.sys hanya menyarankan menggunakan powercfg untuk mematikan hibernasi, dan itu tampaknya bekerja untuk hampir semua orang. Tapi itu terus datang kembali untukku! (Seperti vampir, menyedot ruang disk saya.) Saya memang menemukan satu utas lain dari seseorang yang tampaknya memiliki masalah yang sama, tetapi tidak ada saran di sana yang berfungsi untuk poster asli (atau untuk saya). Namun, saya telah mencoba semua yang tercantum di sana, termasuk:

  • Menonaktifkan tidur hybrid

  • Menonaktifkan Hibernate melalui command prompt, melalui Power Options GUI, dan melalui keduanya (dalam kedua perintah)

  • Mengubah HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Power\HibernateEnabledkunci secara manual

  • Cukup banyak hal lain yang bisa saya pikirkan!

Saya ingin menegaskan kembali bahwa saya tidak memiliki masalah menghapus file - itu berfungsi dengan baik. Itu baru saja kembali setelah setiap reboot. Saya hampir siap untuk menyerah dan menjalankan skrip saat masuk untuk menonaktifkan Hibernate setiap kali, meskipun itu tampaknya seperti "solusi" gila gila. . . tapi saya berharap seseorang di sini bisa menyarankan sesuatu yang lain, pertama.

Corey White
sumber
Anda harus memiliki beberapa perangkat lunak keamanan yang memantau dan melindungi registri.
Moab
1
Mengingat sudah berapa lama pertanyaan ini duduk di sana, dan karena ini mungkin masalah yang lazim, saya telah memberi hadiah pada pertanyaan ini.
bwDraco
Anda tidak menginstal perangkat lunak boot khusus yang akan melakukan ini, bukan?
Mehrdad

Jawaban:

18

Instalasi Windows 7x64 saya ada di partisi SSD di laptop Mac. Saya telah dinonaktifkan dengan powercfg / h off (ditinggikan) dan ms fixit menonaktifkan hibernate, serta nilai registri pengaturan HibernateEnable nilai ke 0. Hiberfil.sys dihapus hanya sampai reboot. Ketika saya mem-boot hiberfil.sys asli selalu dibuat ulang, tetapi ketika saya boot di dalam OS X dan VMware Fusion, hibernasi tetap dinonaktifkan, sebagaimana mestinya.

Saran Tom Wijsman tentang ProcessMonitor dengan boot logging membantu saya menemukan bahwa vmtoolsd.exe (dari VMware) mengaktifkan kembali kunci registri selama boot asli. Saya mencoba untuk mengubah izin di regedit, tetapi mereka tidak menghentikan perubahan nilai menjadi 1. Saya berpikir tentang membuat hiberfil.sys kecil, tapi saya pikir itu akan ditimpa.

Sebagai solusi 99%, saya mengubah nilai HiberFileSizePercent ke desimal 1, yang membuat hiberfil.sys hanya 80MB pada mesin RAM 8GB. Saya kira saya bisa mencoba 0,001 atau kurang, tetapi 80MB tidak banyak.

greenfellow
sumber
1
Terima kasih - Saya menggunakan Macbook dengan Bootcamp dan VMWare Fusion juga, Anda mungkin menyelamatkan saya berjam-jam.
DanB
13

Anda dapat dengan mudah memecahkan masalah ini dengan Process Monitor .

Mulai dan aktifkan Boot Logging di menu Opsi , restart komputer Anda dan mulai Process Monitor.

Lalu, biarkan berhenti menangkap dan kemudian cari HibernateEnableddan periksa apa yang mengubah nilai.


Untuk wawasan lebih lanjut, ini juga dapat dilakukan dengan XBootMgr dari Windows Performance Toolkit.

Petunjuk Instalasi - Dokumen Analisis Kinerja Transisi Aktif / Nonaktif

Tamara Wijsman
sumber
3
Karena jawaban Anda memiliki potensi paling besar untuk menyelesaikan masalah, saya telah memutuskan untuk memberikan hadiah kepada Anda.
bwDraco
Metode ini memecahkan masalah saya. Terima kasih! (Masalah saya adalah tentang Wake-On-LAN, detailnya di sini: superuser.com/questions/1405082/… )
smwikipedia
6

Jika Anda menggunakan boot camp dan vmware fusion:

Temukan file% programfiles% \ VMware \ VMware Tools \ plugins \ vmsvc \ disableGuestHibernate.dll hapus atau pindahkan.

Terakhir, nonaktifkan hibernasi sekali dan untuk semua dengan membuka administrator, perintah yang ditinggikan, meminta dan menjalankan:

matikan powercfg

Plugin disableGuestHibernate dimuat saat alat vmware dimuat. Jika alat vmware memuat saat berjalan dalam vm, itu akan menonaktifkan hibernasi (karena vmware memiliki sistem penangguhan sendiri yang membuat hibernasi berlebihan.) Tetapi jika alat vmware memuat di luar vm (misalnya, Anda menggunakan boot camp untuk boot ke windows) ia akan aktifkan kembali hibernasi jika dinonaktifkan.

themaninblack
sumber
Ini adalah jawaban yang bagus dan sangat terperinci. Jika saya bisa memberikan 10 upvotes, saya akan melakukannya!
Rijk
By the way: cukup mengubah nama itu tidak berfungsi, Anda benar-benar harus menghapus dll.
Rijk
Ini memperbaikinya bagi saya juga. Suara positif!
MortenRøgenes
4

Anda bisa mencoba menghidupkan dan mematikan hibernasi lagi. Dalam cmd "Jalankan sebagai Administrator" lakukan:

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

Jika Anda menggunakan laptop, maka setelah menyalakan hibernasi dan sebelum mematikannya, lakukan juga yang berikut:

  1. Pastikan bahwa tidur hybrid dinonaktifkan.
  2. Opsi Daya → Ubah pengaturan paket → Ubah pengaturan daya tingkat lanjut, perluas Sleep dan ubah nilai "Pada baterai" dan "Dicolokkan" ke 0 menit.

gambar

harrymc
sumber
2

Saya memiliki masalah yang sama. Mencoba:

powercfg –H OFF

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

Setel Control Panel\All Control Panel Items\Power Options\Edit Plan Settingsuntuk Never untuk semua opsi daya.

Dan file itu terus hidup kembali. Saran menggunakan monitor proses melakukan trik untuk saya. Sistem yang saya gunakan memasang "Pointsec for PC", dan proses prot_srv.exe terus mengatur ulang nilai ini. Mengingat PC ini dikunci dengan perangkat lunak ini, tidak banyak yang bisa saya lakukan.

TryingToHelp
sumber
1

hal yang sama di sini!

keluar dari frustrasi, saya bahkan mengkonfigurasi kebijakan lokal sehingga akan menjalankan cmd pada startup mesin yang akan menjalankan baris powercfg, tetapi bahkan itu tidak cukup baik!

ini benar - benar membuat frustrasi karena saya menjalankan Win7 Ultimate pada partisi 60 GB.

dalam percobaan saya berikutnya saya akan bermain-main dengan kunci registri "HiberFileSizePercent" di bawah:

HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Power

dan lihat apakah itu mungkin memaksanya untuk (kembali) membuat file yang lebih kecil setidaknya.

f.

jujur
sumber
+1 - Ini mungkin ide yang bagus. Saya telah menemukan solusi yang sama sambil membantu pengguna lain dengan masalah hibernasinya yang tidak terkait.
SgtOJ
Saya tidak pernah akhirnya menyelesaikan ini. Saya menjalankan skrip login untuk sementara waktu, tetapi itu tidak jelas, dan akhirnya saya akhirnya membeli drive yang lebih besar dan meninggalkan file hiberfil.sys di tempatnya. Semoga beruntung, dan saya akan mengikuti utas ini. Jika Anda berhasil, silakan kirim kembali!
Corey White
Anda juga dapat menghapus hiberfil.syssetelah menonaktifkan hibernasi, dan kemudian membuat direktori bernama hiberfil.sys. Anda tidak dapat memiliki file dan direktori di direktori yang sama dengan nama yang sama, sehingga Windows tidak akan dapat membuat file bernama hiberfil.sys. Tentu saja, MS mungkin telah memperhitungkan hal itu dan mungkin membuat file lain (hiberfi2.sys?) Atau mungkin mengeluh dengan keras tentang hal itu.
Bacon Bits
@BaconBits: biziclop mengatakan ini tidak berfungsi; Windows mengganti folder dengan hiberfil.sysfile.
bwDraco
1

Bukan solusi, tetapi solusi yang berhasil untuk saya:

Saya hanya memiliki 900MB ruang kosong pada drive C saya dan ingin menyingkirkan file hiberfil.sys, yang membutuhkan lebih dari 6GB. Jadi saya menghapusnya dengan powercfg -h. Tapi itu terus datang kembali setelah sekitar 10 detik atau sesuatu. Saya pikir itu ada hubungannya dengan PointSec karena yang disebutkan sebelumnya di sini.

Kemudian saya menonaktifkan hibernasi, dan kemudian dengan cepat menyalin file 1GB ke drive C. Sekarang tidak kembali dan saya masih memiliki 6GB ruang tersisa. Saya kira itu masih mencoba untuk mengaktifkan hibernasi dan menemukan bahwa tidak ada ruang yang cukup untuk itu. Dan lain kali saya kehabisan ruang pada drive C, saya masih bisa menghapus file 1GB ..

Roberg
sumber
0

Mungkin membuatnya ulang secara manual setelah penghapusan dan mengatur izin untuk melarang sistem untuk memodifikasi file? Aku tahu, ini pukulan panjang.

Mungkinkah ini disebabkan oleh partisi pemulihan atau sejenisnya?

oktosiTe
sumber
0

Saya memiliki solusi yang tampaknya berfungsi dengan baik untuk saya (meskipun, mungkin tidak semua orang). Dari apa yang saya kumpulkan, vmtoolsd.exe menonaktifkan hibernasi saat booting di bawah VMware dan kemudian mengaktifkannya kembali (terlepas dari keadaan sebelumnya) saat booting secara native. Karena VMware Tools tidak diperlukan ketika menjalankan asli (Boot Camp), saya membuat file batch yang berisi yang berikut:

@echo off

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

:enable
net start "VMware Tools"

:end

Saya mengatur layanan VMware Tools ke Manual (daripada Otomatis) dan membuat tugas di Penjadwal Tugas. Tugas diatur sebagai berikut:

  • Jalankan apakah pengguna masuk atau tidak
  • Jalankan dengan hak istimewa tertinggi
  • Tersembunyi (mungkin tidak perlu)
  • Pemicu: saat startup sistem
  • Tindakan: file batch di atas
  • Hapus centang semua dalam Kondisi / Pengaturan (mungkin tidak perlu)

CATATAN: karena saya mengandalkan NUMBER_OF_PROCESSORS berbeda dari ketika boot secara native, ini hanya akan berfungsi jika Anda tidak memiliki mesin virtual yang diberi jumlah prosesor yang sama (logis, bukan fisik) pada Mac Anda.

Juga, file batch dapat disederhanakan menjadi:

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

Saya punya beberapa hal di file batch untuk debugging / pengujian dan hanya menyimpannya.

Brandon Crawford
sumber
atau, tetapi memiliki pemeriksaan kesetaraan dan 2 tumpang tindih gotoseperti itu menyakitkan indera estetika saya ketika Anda hanya bisa memiliki yang tidak sama dan 1 goto.
underscore_d
0

Seperti yang dikatakan oKtosiTe, saya mencoba pendekatan licik ini karena tidak ada yang berhasil bagi saya. ProcessMonitor hanya menunjukkan bahwa entri dalam registri dibuat dengan powercfg.exesendirinya.

Saya tidak bisa begitu saja menonaktifkan / mengganti nama atau menghapusnya.

Mungkin karena Kebijakan Grup yang ada di seluruh laptop saya (laptop perusahaan -> kebijakan keamanan super bodoh perusahaan!).

Jadi saya menjalankan perintah, hiberfile.sysmenghilang selama beberapa detik, menyalin nama file hiberfile.sysdari tempat lain (dibuat dalam ukuran editor dan 1 KB) dan mengubah izin untuk hanya membaca (properti file).

Melakukan keajaiban!

Singkatnya:

  1. Jalankan dalam cmd powercfg -h off
  2. Salin hiberfile.sys yang sudah disiapkan
  3. Properties -> read-only

Selesai!

Catatan: tanpa mengubah file izin tumbuh kembali menjadi sekitar 6GB dalam kasus saya.

hiberfile.sys hanya 1KB sekarang

yrk
sumber
0

Kredit jatuh ke @Tom Wijsman.

Masalah khusus saya adalah tentang Wake-On-LAN diblokir oleh hibernasi, detailnya di sini: Bagaimana cara menonaktifkan hibernasi pada Windows 10 secara permanen?

Saya mengikuti metodenya dan mendapatkan boot log.

Dalam kasus saya, ini adalah pengaturan vmtoolsd.exeyang disimpan di bawah nilai registri ke 1, yang benar - benar mengalahkan powercfg /h off.

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Power\HibernateEnabled

The vmtoolsd.exemilik VMware Tools.

Setelah saya uninstall, hiberfil.sysitu tidak pernah dibuat ulang.

smwikipedia
sumber
-2

Setengah jawaban:

Pada Windows XP, ini adalah solusi yang mudah dan permanen:

  1. hapus hiberfil.sys dengan perintah ini (dengan hak admin): powercfg -h off

  2. buat folder bernama "hiberfil.sys" di C: \

Sayangnya, Win7 "lebih pintar" dari XP, dan membunuh folder ini, mengabaikan kombinasi kepemilikan / izin yang saya coba. Tapi terkadang folder hiberfil.sys saya selamat dari satu restart tanpa diganti. Sangat menarik juga bahwa sistem ini sepertinya membuat ulang file asli setelah beberapa detik jendela C: \ muncul di desktop.

Dan terima kasih atas downvote pertamaku :)

pengguna188421
sumber
Itu mungkin bukan ide yang buruk - Anda dapat mengatur izinnya sehingga bahkan Sistem tidak dapat menghapusnya (tanpa terlebih dahulu mengubah izinnya). Tentu saja, win7 mungkin menolak untuk boot.
Hugh Allen
@Hugh: Ada kemungkinan bahwa kode hibernasi, menjadi bagian dari kernel, hanya akan mengabaikan ACL.
grawity