Bonjour.

J'ai un programme pour lire des clés de la bases de registres. Malheureusement, il semble que le programme ne "réagit" pas de la même façon lorsque executé sur un ordinateur x86 et un autre x64.

En effet, le code suivant :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
key= _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE,"Software")
 
# list values owned by this registry key
try:
    i = 0
    while 1:
        name = _winreg.EnumKey(key, i)
        print str(name)
        i += 1
except WindowsError:
    nothing=0
Affiche la meme chose que le code suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
print
print "=======   Software Wow6432Node   ==============="
key= _winreg.OpenKey(
    _winreg.HKEY_LOCAL_MACHINE,
    "Software\\Wow6432Node"
    )
# list values owned by this registry key
try:
    i = 0
    while 1:
        name = _winreg.EnumKey(key, i)
        print str(name)
        i += 1
except WindowsError:
    nothing=0
Sur une machine x64.

Apres quelques recherches, j'ai compris que microsoft redirige automatiquement les demandes à la base de registre sur la clée Wow6432Node meme quand on lui demande Software

Voici mon problème. Je suis intéressé à certaine valeur sous la "vrai" clée Software. Si j'ouvre la base de registre avec regedit version 32-bit, je vois bien qu'il y a une clée Software et sous cette clée, on y retrouve Wow6432Node

M'enfin bref, est ce possible avec _winreg de lire la base de registres comme si elle était en 32-bit?