2010-12-13 8 views
3

In der Windows-Registrierung können die Schlüssel als flüchtig erstellt werden - was bedeutet, dass ein flüchtiger Schlüssel einen PC-Neustart nicht überleben wird. Nach dem Neustart wird keine Spur eines solchen Schlüssels in der Registrierung gefunden. Dies wird durch die Option REG_OPTION_VOLATILE von API RegCreateKeyEx angegeben.Gibt es eine Möglichkeit zu überprüfen, ob ein Windows-Registrierungsschlüssel flüchtig ist (REG_OPTION_VOLATILE)?

Ich muss überprüfen, ob ein bestimmter Windows-Registrierungsschlüssel flüchtig ist oder nicht (erstellt mit REG_OPTION_VOLATILE).

Der Schlüssel befindet sich beispielsweise unter (HKLM \ Software \ MyCompany \ MyProgram \ KeyToBeChecked).

Es scheint keine direkten WIN API-s zu geben, die diese Art der Überprüfung ermöglichen.

Weiß jemand wie das überprüft werden könnte?

+0

Diese Frage nicht viel Sinn macht - was meinen Sie mit 'volatile'? Meinst du, ob der Schlüssel geschrieben werden kann? –

+0

Aktualisierte Frage, um die flüchtigen Schlüssel besser zu beschreiben. –

Antwort

3

Eine Möglichkeit besteht darin, einen nichtflüchtigen Unterschlüssel unter dem Schlüssel zu erstellen, der verifiziert wird, indem RegCreateKeyEx verwendet wird. Wenn der Schlüssel tatsächlich flüchtig ist, würde er mit dem Fehler ERROR_CHILD_MUST_BE_VOLATILE fehlschlagen. Sogar ShSetValue gibt ERROR_CHILD_MUST_BE_VOLATILE zurück, während versucht wird, einen Wert in einem flüchtigen Schlüssel festzulegen.

+0

+1. Sie können einen einfachen Befehl reg.exe verwenden, um einen Unterschlüssel unter dem flüchtigen als Test zu erstellen, und es wird ein Fehler auftreten. Z.B. 'reg hinzufügen HKLM \ SOFTWARE \ WOW6432Node \ volkeytocheck \ test' " FEHLER: Kann nicht einen stabilen Unterschlüssel unter einem flüchtigen Elternschlüssel erstellen. " Wenn Sie mit Process Monitor überprüfen, wird Reg.exe das Ergebnis für die RegCreateKey-Operation als "Kind muss flüchtig" aufgeführt werden. – HelpingHand