Importer la Base de registre windows en xml pour la réutiliser en xml.

Psychokenshin Messages postés 2 Date d'inscription mardi 27 novembre 2007 Statut Membre Dernière intervention 16 juin 2010 - 3 juin 2010 à 11:40
Psychokenshin Messages postés 2 Date d'inscription mardi 27 novembre 2007 Statut Membre Dernière intervention 16 juin 2010 - 16 juin 2010 à 08:46
Bonjour à tous,

Je cherche donc à exporter ma base de registre windows dans un fichier xml et ce de façon à pouvoir l'utiliser facilement dans un dictionnaire python.

Pour cela j'ai essayé avec la librairie Os :

os.system ('regedit \E fichier.xml')


Seulement cela me retourne un fichier xml qui n'est pas facile d'importer dans un dictionnaire python.
Quels conseils pourriez vous me donner?

Merci.
PsychoKenshin.

1 réponse

Psychokenshin Messages postés 2 Date d'inscription mardi 27 novembre 2007 Statut Membre Dernière intervention 16 juin 2010
16 juin 2010 à 08:46
Bonjour,
aucune réponse...
je me suis débrouillé comme j'ai pu, la j'en suis à avoir réussi àà extraire toutes les clés de la base dans un fichier texte que je lis avec une autre fonction dans un dictionnaire python.
Mon problème maintenant c'est que mes clés s'enregistrent dans un "format" PyHKEY, ainsi qu'avec les ruches qui s'affichent dans un format numérique.. ex:

2147483650\\\VideoBiosDate:#:30322f30352f3230


Voici le code de mon programme:

#-*-coding:UTF-8-*-
import _winreg      # biblio d'autopsie de la base de registre
import os           # biblio de pilotage de l'os
import binascii     # bibilio de conversion

def ValueKey(key, sname, sParse):
    donnees = ""
    i = 0
    try:
        while True:
            tp = _winreg.EnumValue(key,i) 
            valuename = tp[0]
            valuedata = tp[1]
            valuetype = tp[2]
            if valuename == '':
                valuename = str(sParse) + 'Par defaut'
            else:
                valuename = str(sParse) + str(valuename)
            if valuedata == '':
                pass
            else:
                str(valuedata)
                
            if valuetype 8  or valuetype 9 or valuetype == 3 or valuetype == 1 : # si reponse illisible =>
                donnees +="\n" + str(valuename) + ":#:" + binascii.hexlify(str(valuedata)) # donnees == donnees convertis en hexa
            else:    
                donnees +="\n" + str(valuename) + ":#:" + str(valuedata) 
            i = i+1
    except EnvironmentError:
        pass
    except UnicodeEncodeError:
        pass
    fichier = open('Etat0.txt','a') 
    donnees = donnees[0:len(donnees)-1]
    fichier.write(donnees)
    fichier.close()         
    
    

def ParseRegister(sRucheName, sParse):
    bContinue = True
    index = 0
    while bContinue :
        try:
            sName = _winreg.EnumKey(sRucheName, index)
            # Ouverture de la sous clé afin de pouvoir la parser
            key = _winreg.OpenKey(sRucheName,sName,_winreg.KEY_READ) 
            sPath = str(sParse) + str(sRucheName) +os.sep
            ValueKey(key, sName, sPath)
            ParseRegister(key, sPath)
        except WindowsError,e:
            bContinue = False
        index +=1
   
    
##MaIN          
lRucheName = [_winreg.HKEY_LOCAL_MACHINE,_winreg.HKEY_CURRENT_CONFIG,_winreg.HKEY_CLASSES_ROOT,_winreg.HKEY_CURRENT_USER,_winreg.HKEY_USERS]
NbRuche = len(lRucheName)
cpt = 0
spath = ''
while cpt < NbRuche :
    NoRuche = lRucheName[cpt]
    print NoRuche
    ParseRegister(NoRuche, spath)
    cpt += 1


J'aurais donc besoin d'aide pour que les ruches s'affichent : HKEY_LOCAL_MACHINE, et que les sous clés qui menent au clés s'affichent de la même manière que lorsqu'on regarde la base de registre et non au format "PyHKEY:0000019C".
En espérant obtenir un peu plus d'aide!!
Merci à vous.
0
Rejoignez-nous