TL; DR:
Saya perhatikan bahwa jika saya membuat perubahan registri dan kemudian mematikan sistem Windows 10 saya, perubahan registri tidak muncul setelah reboot.
Saya juga memperhatikan bahwa penghapusan file hibernasi dapat memengaruhi kemampuan alat pemulihan Linux untuk membuat perubahan pada registri Windows dalam keadaan offline. Alat ini tampaknya tidak dapat membuat perubahan terus-menerus setelah penghapusan file hibernasi. Saya akan mencantumkan contoh spesifik di bawah ini.
Contoh 1:
- Saya menambahkan kunci yang disebut "1111" ke dalam "HKLM \ SOFTWARE". Saya kemudian mematikan kotak saya dengan menekan tombol power selama 5 detik.
- Ketika saya menarik kembali registri, kunci itu dan nilainya hilang:
- (Gambar-gambar ini diedit untuk keperluan format)
Contoh 2 :
- Buat perubahan di registri (menggunakan regedit)
- Hibernasi sistem
- Boot ke alat pemulihan Linux
- Hapus file hibernasi untuk memasang disk.
- Baca registri windows (dari alat pemulihan)
- Perubahan registri hilang.
Ini sepertinya sama dengan shutdown keras pada kotak.
Contoh 3:
Saya melihat perilaku orang asing ketika saya:
- Hibernate the box
- Boot ke alat pemulihan Linux dan hapus file hibernasi
- Buat perubahan pada registri (dari alat pemulihan)
- Nyalakan ulang kotaknya
Perubahan-perubahan itu juga tidak tercermin dalam registri.
Jadi apa yang terjadi di sini?
- Kapan Windows 10 menulis perubahan registri ke disk?
- Mengapa penghapusan file hibernasi (dalam Contoh 3) mencegah perubahan registri yang dibuat dari alat pemulihan agar tidak tercermin pada boot berikutnya?
Berharap mendapatkan klarifikasi!
windows-10
windows-registry
hibernate
Shrout1
sumber
sumber
Jawaban:
TL; DR: Matikan sistem Anda dengan benar.
Hibernasi tidak ada hubungannya dengan mematikan, itu terkait erat dengan suspend-to-RAM (tidur) kecuali dengan isi RAM yang didorong ke disk agar dapat dibaca kembali dan operasi dilanjutkan dari tempat sistem tidak aktif .
Jika Anda ingin perubahan tetap ada maka Anda harus menonaktifkan hibernasi dan Windows Fastboot (yang merupakan subset dari hibernasi). Atau Anda benar-benar dapat reboot daripada hibernate dan restart.
Alasan perubahan tidak bertahan adalah karena mereka belum ditulis ke disk kecuali dalam file hibernasi. Yang Anda hapus, artinya sistem file mungkin harus memperbaiki dirinya sendiri dan kembali ke keadaan "terakhir yang dikenal baik".
Sementara sistem di-hibernasi, akan ada beberapa struktur sistem file utama yang mungkin belum ditulis ke disk dan malah di RAM. Sistem akan, setelah melanjutkan dari hibernasi, mengharapkan disk berada dalam keadaan yang sangat khusus dan ada kemungkinan bahwa cache disk dan file sistem penting disimpan ke file hibernasi daripada ke disk sebenarnya.
Jika Anda melakukan shutdown yang benar maka Windows akan mem-flush memori yang berfungsi dengan baik ke disk, dan kemudian melepas disk dengan bersih sebelum mematikannya.
Untuk memaksa shutdown yang benar, buka prompt perintah dan ketik
/s
adalah "shutdown",/f
untuk memaksa, dan/t 0
berarti "sekarang" (waktu = 0 detik)Atau Anda bisa menonaktifkan fastboot dan hibernasi.
Baca lebih lanjut di HowtoGeek: Mematikan Tidak sepenuhnya Mematikan Windows 10 (Tapi Memulai Lagi)
Terkait dengan Anda melakukan shutdown keras masalahnya ada bahwa Windows tidak dijamin untuk menulis perubahan ke disk milidetik yang sama (atau bahkan menit) yang Anda lakukan perubahan. Itu hampir pasti akan ditulis dalam beberapa menit tetapi kemungkinan itu sebenarnya telah ditulis akan meningkat dari waktu ke waktu. Ini tidak mungkin ditulis segera, kemudian mendekati waktu Anda membuat perubahan, probabilitas meningkat tajam, dan hampir pasti akan ditulis dalam waktu satu jam.
Masalahnya adalah, dengan memaksa hard shutdown Anda tidak memberikan sistem kesempatan untuk menulis perubahan ke disk dengan aman.
Sebagian besar sistem file modern ditulis untuk membuat perubahan dengan cara yang paling aman. Di masa lalu mereka telah disebut sebagai "atom", seperti dalam perubahan yang terjadi atau tidak.
Hari ini kita mengenal mereka sebagai sistem file Journal karena mereka menyimpan log operasi yang akan terjadi yang dapat dikembalikan atau digulung ke depan jika terjadi kegagalan sistem dan reboot. Setelah memulai dari kegagalan daya, sistem memeriksa jurnal dan untuk setiap transaksi memeriksa apakah data file aktual ditulis ke disk dan "baik". Jika sudah maka transasi bergulir ke depan dan selesai, jika tidak maka gulungan kembali ke data lama.
Dengan menggunakan urutan ini, disk hampir selalu dalam kondisi mudah diperbaiki.
Tetapi dengan memaksa sistem Anda untuk mematikan secara tiba-tiba Anda tidak dapat menjamin apakah transaksi telah berkembang cukup jauh untuk maju setelah perbaikan, dan kemungkinan bahwa sistem operasi seperti Linux tidak akan terlalu peduli seperti Windows tentang sejarah transaksi dan lebih mungkin terjadi daripada tidak hanya membuat perubahan yang memutar semuanya ke belakang daripada ke depan.
Jika Anda reboot ke Windows, ia mungkin mencoba atau memperbaiki disk dengan benar karena memiliki pengetahuan yang lebih mendalam tentang sistem file.
sumber
Seperti yang didokumentasikan pada halaman MSDN untuk
RegFlushKey
:Hal ini menunjukkan bahwa selain membersihkan kunci tertentu ke disk segera (yang mengunci semua orang keluar dari registri hingga flush selesai), registri secara otomatis memerah secara berkala: waktu tidak diberikan, tetapi mungkin setidaknya lebih dari waktu Anda menunggu antara menulis kunci dan mematikan keras. Selain itu, memerah saat shutdown, karena Anda sudah tahu.
Anda dapat menggunakan
RegFlushKey
fungsi dalam perangkat lunak yang memanipulasi kata kunci, atau membuat alat tambahan dengan itu untuk memaksa menulis kunci registri ke disk segera, jika ini penting untuk kasus penggunaan Anda.sumber
sync
melakukan flush registri ke disk. Itu tidak masuk akal. Mengapa harus membilas cache sistem file (yang digunakan oleh manajer konfigurasi, bukan sebaliknya) tiba-tiba membersihkan cache manajer konfigurasi itu sendiri? Ia bahkan tidak tahu apa struktur cache level yang lebih tinggi, jika bahkan ada.TL; DR: Hal ini sangat berhati-hati untuk melakukan hal ini pada saat yang tepat .
Dokumentasi pada
FSCTL_MARK_AS_SYSTEM_HIVE
mengatakan ini:Saya tidak percaya ada detail lebih banyak tersedia untuk umum daripada ini.
Ingatlah bahwa pembilasan sistem file tidak berarti pembilasan registri , karena registri dapat melakukan caching di atas sistem file. Untuk membersihkan registri terlebih dahulu, Anda harus entah bagaimana menyebabkan
NtFlushKey
atauZwFlushKey
dipanggil pada kunci minat Anda.sumber