TL; DR:
J'ai remarqué que si je modifie le registre, puis arrête brutalement mon système Windows 10, le changement de registre n'apparaît pas après le redémarrage.
J'ai également remarqué que la suppression d'un fichier d'hibernation pouvait avoir une incidence sur la capacité d'un outil de récupération Linux à apporter des modifications au registre Windows en mode hors connexion. L'outil semble incapable d'apporter des modifications persistantes après la suppression d'un fichier d'hibernation. Je vais énumérer des exemples spécifiques ci-dessous.
Exemple 1:
- J'ajoute une clé appelée "1111" dans "HKLM \ SOFTWARE". J'ai ensuite éteint mon ordinateur en maintenant le bouton d'alimentation enfoncé pendant 5 secondes.
- Lorsque je relève le registre, cette clé et ses valeurs ont disparu:
- (Ces images ont été éditées à des fins de formatage)
Exemple 2 :
- Faire un changement dans le registre (en utilisant regedit)
- Hibernate le système
- Démarrez dans un outil de récupération Linux
- Supprimez le fichier d'hibernation afin de monter le disque.
- Lire le registre Windows (à partir de l'outil de récupération)
- Le changement de registre est parti.
Cela semble équivalent à un arrêt brutal de la boîte.
Exemple 3:
Je vois un comportement étranger quand je:
- Hibernate la boîte
- Démarrez avec un outil de récupération Linux et supprimez le fichier de mise en veille prolongée.
- Apporter des modifications au registre (à partir de l'outil de récupération)
- Redémarrer la boîte
Ces changements ne sont pas reflétés dans le registre non plus.
Alors qu'est-ce qui se passe ici?
- Quand Windows 10 écrit-il les modifications du registre sur le disque?
- Pourquoi la suppression d'un fichier d'hibernation (dans l'exemple 3) empêche-t-elle les modifications de registre apportées par l'outil de récupération d'être répercutées au prochain démarrage?
En espérant avoir des éclaircissements!
la source
Réponses:
TL; DR: Arrêtez votre système correctement.
L’hibernation n’a rien à voir avec l’arrêt; elle est étroitement liée à la suspension de la RAM, à l’exception du contenu de la RAM inséré sur le disque afin que celui-ci puisse être lu et que l’opération reprenne exactement à l'endroit où le système s'est arrêté. .
Si vous souhaitez que les modifications persistent, vous devez désactiver la mise en veille prolongée et Windows Fastboot (qui est un sous-ensemble de la mise en veille prolongée). Ou vous pouvez réellement redémarrer plutôt que d'hiberner et redémarrer.
Les modifications ne sont pas conservées car elles ne sont pas encore écrites sur le disque, sauf dans le fichier de veille prolongée. Ce que vous êtes en train de supprimer, ce qui signifie que le système de fichiers devra peut-être se réparer lui-même et revenir à un état "dernier bon connu".
Pendant l'hibernation du système, il y aura plusieurs structures de système de fichiers clés qui n'ont peut-être pas été écrites sur le disque mais qui sont plutôt en RAM. À la sortie de veille prolongée, le système s’attend à ce que le disque soit dans un état très particulier et il est possible que les caches de disque et les fichiers système importants soient enregistrés dans le fichier de veille prolongée plutôt que sur le disque lui-même.
Si vous effectuez un arrêt approprié, Windows videra correctement la mémoire de travail sur le disque, puis démontera le disque proprement avant de le mettre hors tension.
Pour forcer un arrêt approprié, ouvrez une invite de commande et tapez
/s
est "shutdown",/f
forcer et/t 0
signifier "maintenant" (temps = 0 secondes)Ou vous pouvez simplement désactiver le démarrage rapide et l'hibernation.
En savoir plus sur HowtoGeek: La fermeture ne ferme pas complètement Windows 10 (mais le redémarrage le fait)
En ce qui concerne l’arrêt brutal, le problème est qu’il n’est pas garanti que Windows écrit toutes les modifications sur le disque de la même milliseconde (ou même la minute) à laquelle vous les avez apportées. Il sera presque certainement écrit dans quelques minutes, mais la probabilité que ce texte ait été écrit augmentera avec le temps. Il est peu probable que l’on écrive immédiatement, puis près du moment où vous apportez le changement, la probabilité augmente brusquement et aura presque certainement été écrite en une heure.
Cependant, en forçant un arrêt brutal, vous ne donnez pas au système la possibilité d'écrire en toute sécurité des modifications sur le disque.
La plupart des systèmes de fichiers modernes sont écrits pour apporter des modifications de la manière la plus sûre possible. Dans le passé, ils ont été qualifiés d '"atomiques", car le changement a eu lieu ou ne s'est pas produit.
Aujourd'hui , nous les connaissons comme des systèmes de fichiers journalisé parce qu'ils tiennent un registre des opérations qui se produira qui peut être soit Reconvertit ou roulées vers l' avant en cas de défaillance du système et le redémarrage. Au démarrage, après une panne de courant, le système vérifie le journal et vérifie, pour chaque transaction, si les données du fichier sont écrites sur le disque et sont "correctes". Si c'est le cas, la transition est ensuite poursuivie et terminée. Sinon, elle revient aux anciennes données.
En utilisant cette commande, le disque est presque toujours dans un état facile à réparer.
Mais en forçant votre système à s’éteindre de manière inattendue, vous ne pouvez pas garantir que la transaction a progressé suffisamment loin pour être réparée. Il est donc probable qu’un système d’exploitation tel que Linux ne se soucie pas autant que Windows de l’historique des transactions et qu’il est plus probable. que de ne pas simplement faire des changements qui renvoient tout en arrière plutôt qu'en avant.
Si vous redémarrez Windows, il est possible que le disque soit réparé correctement car il possède une connaissance plus intime du système de fichiers.
la source
Comme indiqué sur la page MSDN pour
RegFlushKey
:Cela suggère qu'en dehors du vidage immédiat d' une clé spécifique sur le disque (ce qui verrouille tout le monde hors du registre jusqu'à ce que le vidage soit terminé), le registre est automatiquement vidé périodiquement: un délai n'est pas donné, mais il est vraisemblablement au moins supérieur à la le temps que vous avez attendu entre l’écriture de la clé et l’arrêt brutal. De plus, il est vidé à l’arrêt, comme vous l’aviez déjà compris.
Vous pouvez utiliser la
RegFlushKey
fonction du logiciel qui manipule ladite clé ou créer un outil supplémentaire pour forcer l'écriture immédiate d'une clé de registre sur le disque, si cela est crucial pour votre cas d'utilisation.la source
sync
fait affleurant le registre sur le disque. Cela n'aurait aucun sens. Pourquoi vider le cache du système de fichiers (utilisé par le gestionnaire de configuration, et non l'inverse) viderait-il soudainement le propre cache du gestionnaire de configuration? Il ne sait même pas quelle est la structure du cache de niveau supérieur, s'il en existe un.TL; DR: C'est très prudent de faire cela au bon moment .
La documentation sur
FSCTL_MARK_AS_SYSTEM_HIVE
a ceci à dire:Je ne crois pas qu'il y ait plus de détails disponibles publiquement que cela.
Gardez à l' esprit que le rinçage du système de fichiers ne signifie pas le rinçage du registre , parce que le registre peut effectuer la mise en cache sur le dessus du système de fichiers. Pour vider le registre en premier, vous devez d’une manière
NtFlushKey
ou d’ une autre causer ouZwFlushKey
être appelé sur votre clé d’intérêt.la source