7
votes

Obtenir la valeur de la clé de registre C #

J'ai déjà examiné les sujets existants, essayez donc de vous abstenir de laisser tomber des liens ici.

Je veux obtenir la valeur d'une clé de registre - simple et simple. Voici ce que j'ai jusqu'à présent.

registre: 1) Fabriqué une clé sous

actuel_user \ logiciel \ Custom_subkey \ Custom_Value \ Custom_Key \ string_value

J'essaie de trouver le string_value xxx

espérons que c'est une solution simple. J'ai hâte d'entendre vos réponses. Merci, Evan


5 commentaires

root.opensubkey (clés) renvoie null. C'est pourquoi vous obtenez cette erreur.


N'est-ce pas le code approprié alors? Je suppose que ... y a-t-il une autre façon d'ouvrir la clé?


Des documents "Si la sous-clé spécifiée ne peut pas être trouvée, NULL est retourné."


Oui, je suis d'accord - le chemin est incorrect ... (en quelque sorte) mais je suis confus à propos de cette partie car la clé existe. Laissez-moi triple chèque!


Je suis allé dans le registre et "Copier le nom de la clé" et renvoyai la même clé que j'utilise dans mon programme. Je me suis également assuré que le "nom de clés" existe - et cela a une valeur. Donc, le chemin semble être correct ici.


3 Réponses :


8
votes

Je crois que vous voulez root.getsubkeynames () dans la boucle NON getvaluenames ()

tandis que les valeurs fonctionnent pour obtenir les valeurs que je suggérerais la boucle suivante : xxx


3 commentaires

Les noms getvaluenes () fonctionnent bien - il obtient toutes les valeurs de la sous-clé donnée. Mais je veux ensuite trouver la valeur de chaîne des valeurs trouvées ci-dessus. C'est là que je rencontre des problèmes. Je suis sûr que je suis sûr que le nom est écrit exactement tel qu'il est trouvé dans le registre. Il semble que je devrai faire plus d'enquête plus importante.


La valeur n'est pas la même que la clé. Voir l'échantillon de code ci-dessus.


Mettre le doigt dessus. + 1 / réponse correcte.



3
votes

the openubkey méthode ne fait pas jeter une exception si la sous-clé spécifiée n'est pas trouvée. Au lieu de cela, il renvoie simplement null . C'est votre responsabilité en tant que programmeur pour vous assurer que la clé appropriée a été trouvée et ouverte en cochant la valeur de retour de l'appel de la méthode.

Ainsi, ma suspicion est que la clé de registre que vous avez spécifiée n'est pas valide. Ouvrez l'Éditeur de registre ( rededt32.exe ) et vérifiez que vous pouvez trouver la clé de registre exactement comme écrit .

Si vous constatez que la clé de registre est bien située exactement là où vous pensiez que c'était, le problème peut alors être lié au sous-système WOW64, qui permet aux versions de 64 bits de Windows d'exécuter des applications 64 bits. Si la valeur a été écrite dans le registre par un programme 32 bits, vous ne pourrez pas la lire avec le code ci-dessus à partir d'un programme 64 bits (ou inversement). Le moyen le plus simple de vérifier que cela consiste à modifier les paramètres de compilation de votre projet. Par exemple, si vous compilez actuellement pour X86, passez à la compilation de la compilation de X64, ou inversement. Redirection du registre peut également se mettre en route; Cela vérifiera cela aussi.


5 commentaires

Je sais que cela me fait sonner comme un trou ***, mais n'hésitez pas à décliner ... Souhaitez-vous être prêt à créer une clé de registre sous "HKCU \ Software", puis ajoutez une autre clé sous cette clé, puis ... Donnez cette dernière clé une valeur? Une fois que les clés sont là, vous pourrez peut-être voir où je suis en train de gâcher? Je ne pense pas que mon système d'exploitation est le problème que je fais tout cela sur une machine en ce moment (32 bits).


@Évan: Darn, je pensais que la suggestion 64 bits serait la solution. Je suppose que je peux faire ça ... donnez-moi une minute.


@Évan: le problème est que root n'a pas de souske! Il a une valeur , mais pas de sous-clés.


Donc, suggéreriez-vous que j'utilise le fourni par Hogan? Il obtient la valeur juste bien, mais cela ne renvoie pas le nom de la clé. Quelque chose que je peux sûrement modifier au travail mais - juste demander.


@Évan: Je n'ai aucune idée. Il est difficile de dire ce que vous essayez de faire. Je pense que vous confondez la valeur et la clé de terminologie. Si le code fait ce que vous voulez, utilisez-le.



1
votes

Je voulais la même chose et votre code m'a aidé, mais comme vous l'avez dit, cela ne fonctionnait pas correctement. Donc, j'ai fait des modifications et je pense que ça fonctionne bien maintenant! Essayez ceci: xxx


0 commentaires