2010-12-13 112 views
3

Dans le registre Windows, les clés peuvent être créées de manière volatile, ce qui signifie qu'une clé volatile ne survivra pas à un redémarrage du PC. Après le redémarrage, aucune trace de cette clé ne sera trouvée dans le registre. Ceci est spécifié par l'option REG_OPTION_VOLATILE de l'API RegCreateKeyEx.Existe-t-il un moyen de vérifier si une clé de registre Windows est volatile (REG_OPTION_VOLATILE)?

Je dois vérifier si une certaine clé de registre Windows est volatile ou non (créée avec REG_OPTION_VOLATILE). Par exemple, la clé peut se trouver sous (HKLM \ Software \ MyCompany \ MyProgram \ KeyToBeChecked).

Il ne semble pas y avoir d'API WIN directe permettant d'effectuer ce type de vérification.

Est-ce que quelqu'un sait comment cela a pu être vérifié?

+0

Cette question ne fait pas beaucoup de sens - qu'est-ce que vous entendez par 'volatile'? Voulez-vous dire, si la clé peut être écrite? –

+0

Juste une question mise à jour, pour mieux décrire les touches volatiles. –

Répondre

3

Une façon consiste à essayer de créer une sous-clé non volatile sous la clé en cours de vérification, en utilisant RegCreateKeyEx. Si la clé est effectivement volatile, alors elle échouerait avec l'erreur ERROR_CHILD_MUST_BE_VOLATILE. Même ShSetValue renvoie ERROR_CHILD_MUST_BE_VOLATILE en essayant de définir une valeur dans une clé volatile.

+0

+1. Vous pouvez utiliser une simple commande reg.exe pour créer un sous-clé sous le volatile comme un test et il va erreur. Par exemple. 'reg ajoute HKLM \ SOFTWARE \ WOW6432Node \ volkeytocheck \ test' " ERREUR: impossible de créer une sous-clé stable sous une clé parent volatile. " Si vous vérifiez avec le moniteur de processus, Reg.exe obtiendra le résultat pour l'opération de RegCreateKey énumérée en tant que «CHILD DOIT ÊTRE VOLATILE». – HelpingHand