10
votes

Boucle à travers des valeurs ou une clé de registre .. _Winreg Python

Comment puis-je boucler à travers toutes les valeurs d'une clé de registre Windows à l'aide du module Python _Winreg. J'ai du code qui fera ce que je veux, mais c'est pour les sous-clés de la clé de registre spécifiée.


Voici le code: xxx


OH, le figuré. Mais si quelqu'un sait d'une autre façon de le faire, j'accepterai toujours cette réponse!


0 commentaires

5 Réponses :


7
votes

ne devrait pas être enumvalue d'aider ici

# list all values for a key
try:
    count = 0
    while 1:
        name, value, type = _winreg.EnumValue(t, count)
        print repr(name),
        count = count + 1
except WindowsError:
    pass


0 commentaires

10
votes

Je préfère éviter l'erreur au lieu de plonger directement ...

Utilisez _ winreg.queryinfokey pour obtenir le nombre de valeurs: xxx

pour obtenir le nombre de clés, même méthode , index différent (deuxième moitié de la question originale): xxx

Remarque: utiliser importer au lieu de de à partir de ... importer pour le rendre explicite lorsque les fonctions et les variables viennent de. Facilite la suivi du code plus tard dans la vie.


1 commentaires

Le -1 dans xRange laisse la dernière touche. Je pense que cela devrait simplement être pour i in xrange (_winreg.queryinfokey (clé) [0]):



0
votes

Pour itération des clés et des valeurs du registre, vous auriez besoin de Enumkey () et Enumvalue () méthode à partir de _winreg Module. Notez que ces deux méthodes, prennent index comme argument et vous fourniront la clé (ou la valeur) uniquement pour l'indice donné. Par conséquent, afin d'obtenir toutes les clés (ou valeurs), vous devez incrémenter l'index par un et continuer jusqu'à ce que WindowsError n'a pas rencontré.

Cet article pourrait vous aider pour une compréhension détaillée sur la même chose. Le lien GitHub pour le code peut être trouvé dans le poteau.


0 commentaires

2
votes

pour Python 3 xxx


0 commentaires

0
votes

(python3) à l'aide de générateurs et de récursivité, car je n'aime pas les comptoirs ...

 def get_keys(self, path, i=0):
    try:
        yield winreg.EnumValue(winreg.OpenKey(winreg.HKEY_CURRENT_USER, path), i)
        yield from get_keys(path, i+1)
    except WindowsError as err:
        pass


for name, value, type in r.get_keys(r"Local Settings\Software\Microsoft\Windows\Shell\MuiCache"):
    print(f"{name} => {value} ({type})"


0 commentaires