2010-11-17 6 views
4

Étant donné un chemin de registre "\ a \ b \ c \ d", je voudrais ajouter une valeur à la clé 'd'. Le catch est - je ne sais pas si a, b, ou c existent, et je veux que le code les génère s'ils n'existent pas. Existe-t-il un moyen rapide (en utilisant une méthode .NET que je n'ai pas vu) de faire cela? Je pourrais suivre la route d'itération à travers les clés de registre et utiliser les méthodes OpenSubKey/GetValue/SetValue pour effectuer le processus, mais je voudrais éviter de réinventer la roue si je peux ...Comment ajouter une clé/valeur de registre imbriquée en C#?

NB: Le comportement que je recommande est le même comportement que vous obtiendriez en exécutant un fichier .reg (il créera les sous-clés nécessaires).

Merci,

Assaf

+1

Vous pouvez obtenir ce résultat en écrivant vos clés dans un fichier .reg et en l'exécutant avec une commande système à partir de .NET, mais ce serait une solution rapide, et je ne serais pas vraiment le recommander... –

Répondre

13

Je ne connais pas d'appel intégré que vous pouvez faire pour cela. Toutefois, vous n'avez pas besoin d'appeler OpenSubKey/GetValue, etc. Un appel à CreateSubKey va créer une nouvelle clé ou ouvrir la clé existante si elle existe. Ignorez l'extra 'là dedans, j'en avais besoin pour que la mise en forme paraisse correcte. ??

De même, assurez-vous de tester les exceptions lorsque vous ajoutez des clés de registre ... il y a beaucoup de problèmes de sécurité et de chemin qui pourraient mal tourner. Une liste d'exceptions à piéger est here.


EDIT
Je fais ce trop compliqué! Je viens de tester ... ce qui suit va faire exactement ce que vous voulez:

RegistryKey regKey = startingRootKey; 
regKey = regKey.CreateSubKey(@"a\b\c\d"); 
regKey.SetValue("ValueName", "Value"); 
regKey.Close(); 

Il est assez intelligent pour analyser le chemin imbriqué. Assurez-vous juste que vous avez le symbole @, ou il traitera la chaîne comme si elle était échappée.

0

Je ne pense pas qu'il y ait rien construit, mais faire une scission de chaîne sur le chemin de Registre, puis une boucle à travers et faire CreateSubKey (au lieu de OpenSubKey il crée manque ceux) sur chaque partie est ok à mon avis.

Questions connexes