Comme documenté sur la page MSDN pour RegFlushKey :
L’appel à RegFlushKey est une opération coûteuse qui affecte significativement les performances à l’échelle du système car elle consomme de la bande passante disque et bloque les modifications de toutes les clés par tous les processus dans la ruche du registre qui est vidée jusqu’à ce que l’opération de vidage soit terminée. RegFlushKey ne devrait être appelé explicitement que quand une application doit garantir que les modifications du registre sont persistées sur le disque immédiatement après modification. Toutes les modifications faites aux clés sont visibles par les autres processus sans avoir besoin de les vider sur le disque.
Sinon, le registre dispose d’un mécanisme de ‘vidage paresseux’ qui vide les modifications du registre sur le disque à intervalles réguliers. En plus de cette opération de vidage régulière, les modifications du registre sont aussi vidées sur le disque à l’arrêt du système. Laisser le ‘vidage paresseux’ vider les modifications du registre est la manière la plus efficace de gérer les écritures du registre vers le stockage sur disque.
Cela suggère qu’en dehors du vidage immédiat d’une clé spécifique sur le disque (ce qui bloque 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 plus long que 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 fonction RegFlushKey dans le logiciel qui manipule ladite clé, ou créer un outil supplémentaire avec elle pour forcer l’écriture immédiate d’une clé de registre sur le disque, si cela est crucial pour votre cas d’utilisation.
L’article de support Microsoft désormais disparu “Saving application registry changes on Windows 8 or Windows Server 2012” (lien archive.org ici) indique ce qui suit :
Pour maximiser les performances, les mises à jour du registre dans Windows 8 et Windows Server 2012 ne sont pas immédiatement vidées sur le disque. Au lieu de cela, le registre vide les données modifiées du registre sur le disque à intervalles réguliers. De plus, les données modifiées du registre sont sauvegardées sur le disque quand le système s’arrête. Dans la plupart des cas, ces mécanismes sont suffisants pour garantir que les modifications du registre atteignent le disque en toute sécurité.
Comme les modifications du registre ne sont pas immédiatement vidées sur le disque, si une machine perd l’alimentation immédiatement après qu’une application modifie le registre, les modifications du registre de l’application pourraient ne pas être sauvegardées. Si cela se produit, l’application peut observer les effets suivants au redémarrage du système :
-
Les modifications du registre faites par l’application peuvent ne pas être visibles
-
Un pilote nouvellement installé peut ne plus sembler être installé et devra être réinstallé
-
Un pilote nouvellement désinstallé sera toujours installé et devra être désinstallé à nouveau
Une application ou un installateur peut demander que ses modifications du registre soient écrites sur le disque immédiatement en utilisant l’API RegFlushKey. Cependant, appeler RegFlushKey est une opération coûteuse qui affecte significativement les performances à l’échelle du système. Les applications et installateurs ne devraient appeler cette API que s’ils doivent garantir que leurs modifications du registre sont immédiatement persistées sur le disque.
Aussi, un extrait de la réponse de Mokubai :
Pendant que le système est en hibernation, il va y avoir plusieurs structures clés du système de fichiers qui n’ont peut-être pas été écrites sur le disque et sont plutôt en RAM. Le système s’attendra, en reprenant de l’hibernation, à ce que le disque soit dans un état très particulier et il est possible que les caches disque et les fichiers système importants soient sauvegardés dans le fichier d’hibernation plutôt que sur le disque réel…
L’article lié de How To Geek dans cette réponse était très instructif :
Le Démarrage rapide mélange le processus d’arrêt traditionnel avec l’hibernation. Avec le Démarrage rapide activé, Windows 10 écarte tous vos programmes et fichiers ouverts (comme lors d’un arrêt traditionnel), mais sauvegarde l’état du noyau Windows sur le disque (comme lors d’une hibernation). La prochaine fois que vous démarrez votre PC, Windows restaure le noyau et démarre le reste du système.
Entre le Démarrage rapide / Arrêt hybride et le délai de vidage des clés, la plupart des pièces se mettent en place. Si le système a réussi à stocker la modification en mémoire mais ne l’avait pas vidée sur le disque, alors elle serait sauvegardée dans le fichier d’hibernation lors d’un arrêt hybride ou simplement écartée lors d’un arrêt brutal. Si le fichier d’hibernation est écarté par l’outil de récupération, alors la modification n’existera plus non plus.