IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

souci lecture detail registre [Python 2.X]


Sujet :

Python

  1. #1
    Membre confirmé Avatar de Thierry_V
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations forums :
    Inscription : Août 2013
    Messages : 153
    Par défaut souci lecture detail registre
    Bonjour,

    j'ai un souci de lecture registre dans le détail d'une sous/clé mais sur un ensemble de lecture de clés.
    voici mon code
    Je voudrais lire la valeur des sous clés, il s'agit de clés de service, donc certaines clés de possède pas la valeur Start qui définie si actif, désactivé etc...

    Lire la suite des clés de services pas de souci mais dans la boucle chaque clé possède une valeur start ,enfin généralement, donc quand cette clé ne la possède pas je sors du traitement.
    J'ai essayé divers combinaison, mais rien, que neni.. à force d'essai je commence a ne plus pouvoir être cohérent

    si on pouvais me donner une solution, merci....

    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
    16
    17
    18
    19
    20
    21
    22
    23
     
    TxtSecurite2.delete("1.0",END)     
     
            TxtSecurite2.insert(END,'\n\n\r'+'Liste des Services ..'+'\n\r')
            typevaleur=0
            regHandle = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE,"SYSTEM\\ControlSet001\\Services",0, _winreg.KEY_READ)
            try:
                i=0
     
                while 1:
                    name = _winreg.EnumKey(regHandle,i)
                    (typevaleur) = _winreg.QueryValue(_winreg.HKEY_LOCAL_MACHINE,"SYSTEM\\ControlSet001\\Services\\"+(name))
                    (val01,val02) = _winreg.QueryValueEx(regHandle,'Start')
                    TxtSecurite2.insert(END,u'service....... : '+name+' '+str(val01)+val02+'\n\r')
     
                    i += 1
     
     
            except EnvironmentError as err:
                TxtSecurite2.insert(END,u'impossible de lire '+name)
                pass 
     
            _winreg.CloseKey(regHandle)

    Alors que là les services je les lis, mais comme plus haut, c'est la valeur de ces clés ,la valeur 'start' qui pose problème

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    regHandle = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE,"SYSTEM\\ControlSet001\\Services",0, _winreg.KEY_READ)
    try:
        i=0
     
        while 1:
            name = _winreg.EnumKey(regHandle,i)
            print('service....... : '+name+'\n\r')     
            i += 1     
     
    except EnvironmentError as err:
        print('impossible de lire '+name)

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    MS-Windows n'est pas trop mon monde mais juste en me basant sur la doc officielle suivante : https://docs.python.org/2.7/library/_winreg.html

    J'ai établi ceci :

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
     
    from __future__ import unicode_literals
    import os
    import _winreg
     
    def win_path (path_str):
        "reconstruit un chemin conforme à Windows"
        return os.path.normpath(str(path_str))
    # end def
     
    def build_path (path_str, *args):
        "construit un chemin conforme à Windows"
        return win_path(os.path.join(path_str, *args))
    # end def
     
    def dump_subkey (path_str):
        """
            retourne un dict() de valeurs et une list() des sous-clés d'une
            clé de registre donnée; on peut aussi se servir de cette
            fonction en récursivité dans une arborescence;
        """
        dict_values = dict()
        list_subkeys = list()
        with _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, win_path(path_str)) as h_key:
            nb_subkeys, nb_values, last_modified = _winreg.QueryInfoKey(h_key)
            # on remplit le dict() de valeurs
            for i in range(nb_values):
                kv_name, kv_value, kv_type = _winreg.EnumValue(h_key, i)
                dict_values[kv_name] = str(kv_value)
            # end for
            # on remplit la liste de noms de sous-clés
            for i in range(nb_subkeys):
                subkey_name = _winreg.EnumKey(h_key, i)
                list_subkeys.append(subkey_name)
            # end for
        # end with
        # on retourne un tuple
        return (dict_values, list_subkeys)
    # end def
     
    # début du test (output: console IDLE)
     
    dict_values, list_subkeys = dump_subkey("SYSTEM/ControlSet001/Services")
     
    print "\nValues:\n"
    print dict_values
    print "\nSubkeys:\n"
    print list_subkeys
    Je ne sais pas si c'est exactement ce que vous cherchez, mais c'est peut-être un début de piste... ?

    @+.

  3. #3
    Membre confirmé Avatar de Thierry_V
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations forums :
    Inscription : Août 2013
    Messages : 153
    Par défaut
    bonjour tarball69

    le problème est que dict_values reste vide avec _winreg.EnumValue(h_key, i)
    d'après ce que j'ai pu voir la fonction EnumValue serait buguée

    car ce que je veux c'est :

    "SYSTEM/ControlSet001/Services"

    sous clé : par exemple = AdobeARMservice

    Ensuite les valeurs de sous clés = liste de toutes les valeurs registre avec (Nom, Type, Données)

    ensuite suivant le nom et valeur de la donnée, je donne une information supplémentaire


    dur dur, il y a bien une fonction a utiliser !!

    merci encore pour ton temps.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Citation Envoyé par Thierry_V Voir le message
    bonjour tarball69

    le problème est que dict_values reste vide avec _winreg.EnumValue(h_key, i)
    d'après ce que j'ai pu voir la fonction EnumValue serait buguée
    ah ben pas chez moi en tout cas (voir ci-dessous).

    j'obtiens bien des valeurs pour les sous-clés qui en ont (lorsqu'elles en ont).

    car ce que je veux c'est :

    "SYSTEM/ControlSet001/Services"

    sous clé : par exemple = AdobeARMservice

    Ensuite les valeurs de sous clés = liste de toutes les valeurs registre avec (Nom, Type, Données)

    ensuite suivant le nom et valeur de la donnée, je donne une information supplémentaire


    dur dur, il y a bien une fonction a utiliser !!

    merci encore pour ton temps.
    Essayez ceci :

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
     
    from __future__ import unicode_literals
    import os
    import _winreg
     
    def win_path (path_str):
        "reconstruit un chemin conforme à Windows"
        return os.path.normpath(str(path_str))
    # end def
     
    def build_path (path_str, *args):
        "construit un chemin conforme à Windows"
        return win_path(os.path.join(path_str, *args))
    # end def
     
    def dump_subkey (path_str):
        """
            retourne un dict() de valeurs et une list() des sous-clés d'une
            clé de registre donnée; on peut aussi se servir de cette
            fonction en récursivité dans une arborescence;
        """
        dict_values = dict()
        list_subkeys = list()
        with _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, win_path(path_str)) as h_key:
            nb_subkeys, nb_values, last_modified = _winreg.QueryInfoKey(h_key)
            # on remplit le dict() de valeurs
            for i in range(nb_values):
                kv_name, kv_value, kv_type = _winreg.EnumValue(h_key, i)
                dict_values[kv_name] = kv_value
            # end for
            # on remplit la liste de noms de sous-clés
            for i in range(nb_subkeys):
                subkey_name = _winreg.EnumKey(h_key, i)
                list_subkeys.append(subkey_name)
            # end for
        # end with
        # on retourne un tuple
        return (dict_values, list_subkeys)
    # end def
     
    # début du test (output: console IDLE)
     
    root_path = "SYSTEM/ControlSet001/Services"
    dict_values, list_subkeys = dump_subkey(root_path)
    nb_items = 10
    # liste les 10 premiers
    for subkey in list_subkeys[:nb_items]:
        sk_path = build_path(root_path, subkey)
        d_values, l_subkeys = dump_subkey(sk_path)
        print "Key:", sk_path
        print "Values:", d_values
        print "Subkeys:", l_subkeys
        print "-" * 80
    # end for
    Pour l'instant, c'est juste histoire d'éventrer la bête on pourra optimiser le code plus tard.

    Note: j'ai limité le dump à 10 sous-clés parce que sinon, il m'en sortait plus de 500 !

    Vous pouvez modifier la variable nb_items = 10 avec le nombre de sous-clés que vous souhaitez analyser.

    Avec ce snippet, j'obtiens sous Win 8 :

    Code text : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    Key: SYSTEM\ControlSet001\Services\.NET CLR Data
    Values: {}
    Subkeys: ['Linkage', 'Performance']
    --------------------------------------------------------------------------------
    Key: SYSTEM\ControlSet001\Services\.NET CLR Networking
    Values: {}
    Subkeys: ['Linkage', 'Performance']
    --------------------------------------------------------------------------------
    Key: SYSTEM\ControlSet001\Services\.NET CLR Networking 4.0.0.0
    Values: {}
    Subkeys: ['Linkage', 'Performance']
    --------------------------------------------------------------------------------
    Key: SYSTEM\ControlSet001\Services\.NET Data Provider for Oracle
    Values: {}
    Subkeys: ['Linkage', 'Performance']
    --------------------------------------------------------------------------------
    Key: SYSTEM\ControlSet001\Services\.NET Data Provider for SqlServer
    Values: {}
    Subkeys: ['Linkage', 'Performance']
    --------------------------------------------------------------------------------
    Key: SYSTEM\ControlSet001\Services\.NET Memory Cache 4.0
    Values: {}
    Subkeys: ['Linkage', 'Performance']
    --------------------------------------------------------------------------------
    Key: SYSTEM\ControlSet001\Services\.NETFramework
    Values: {}
    Subkeys: ['Performance']
    --------------------------------------------------------------------------------
    Key: SYSTEM\ControlSet001\Services\1394ohci
    Values: {'Owners': [u'1394.inf'], 'ImagePath': u'\\SystemRoot\\System32\\drivers\\1394ohci.sys', 'DisplayName': u'@1394.inf,%PCI\\CC_0C0010.DeviceDesc%;1394 OHCI Compliant Host Controller', 'Start': 3, 'ErrorControl': 1, 'Group': u'', 'Type': 1}
    Subkeys: []
    --------------------------------------------------------------------------------
    Key: SYSTEM\ControlSet001\Services\3ware
    Values: {'Owners': [u'3ware.inf'], 'ImagePath': u'System32\\drivers\\3ware.sys', 'Group': u'SCSI miniport', 'Start': 0, 'Tag': 66, 'ErrorControl': 1, 'Type': 1}
    Subkeys: ['Parameters', 'StartOverride']
    --------------------------------------------------------------------------------
    Key: SYSTEM\ControlSet001\Services\ACPI
    Values: {'Owners': [u'acpi.inf'], 'ImagePath': u'System32\\drivers\\ACPI.sys', 'DisplayName': u'@acpi.inf,%ACPI.SvcDesc%;Microsoft ACPI Driver', 'Start': 0, 'Tag': 2, 'ErrorControl': 3, 'Group': u'Core', 'Type': 1}
    Subkeys: ['Parameters', 'Enum']
    --------------------------------------------------------------------------------
    

    Apparemment, il suffirait de tester par exemple if "Start" in d_values: à chaque itération de subkey pour rajouter des infos spécifiques.

    C'est un exemple, il faut adapter à vos besoins persos, évidemment.

    @+.

  5. #5
    Membre confirmé Avatar de Thierry_V
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations forums :
    Inscription : Août 2013
    Messages : 153
    Par défaut
    Bonsoir

    ça fonctionne , donc pour déterminer le nombre de clé j'ai fais cette fonction et mis :
    nb_items = nbcle()

    Est-ce correcte ?

    ce qui veux dire dans la fin de votre code je teste les valeurs et les places dans un fichier pour organiser un rapport txt ?
    ce qui me surprends c'est la syntaxe des print, il n'y a pas de (

    un bout de teste ok

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    for subkey in list_subkeys[:nb_items]:
        sk_path = build_path(root_path, subkey)
        d_values, l_subkeys = dump_subkey(sk_path)
        if 'Start' in d_values:
     
            print "Subkeys:", l_subkeys
            for i in d_values:
                print "Values:", d_values[i], i
     
            print "Key:", sk_path
            print "-" * 80
    # end for

    En tout cas merci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    # fonction de compteur Nb services
     
    def nbcle(): 
        regHandle = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE,"SYSTEM\\ControlSet001\\Services",0, _winreg.KEY_READ)
        i=0
        nb=0
        try:
            while 1:
                sid = _winreg.EnumKey(regHandle,i)
                nb += 1
                i += 1       
        except EnvironmentError as err:
            return (nb)

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Thierry_V Voir le message
    Bonsoir

    ça fonctionne , donc pour déterminer le nombre de clé j'ai fais cette fonction et mis :
    nb_items = nbcle()

    Est-ce correcte ?
    Bah non, il suffit d'enlever la bride :

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
     
    from __future__ import unicode_literals
    import os
    import _winreg
     
    def win_path (path_str):
        "reconstruit un chemin conforme à Windows"
        return os.path.normpath(str(path_str))
    # end def
     
    def build_path (path_str, *args):
        "construit un chemin conforme à Windows"
        return win_path(os.path.join(path_str, *args))
    # end def
     
    def dump_subkey (path_str):
        """
            retourne un dict() de valeurs et une list() des sous-clés d'une
            clé de registre donnée; on peut aussi se servir de cette
            fonction en récursivité dans une arborescence;
        """
        dict_values = dict()
        list_subkeys = list()
        with _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, win_path(path_str)) as h_key:
            nb_subkeys, nb_values, last_modified = _winreg.QueryInfoKey(h_key)
            # on remplit le dict() de valeurs
            for i in range(nb_values):
                kv_name, kv_value, kv_type = _winreg.EnumValue(h_key, i)
                dict_values[kv_name] = kv_value
            # end for
            # on remplit la liste de noms de sous-clés
            for i in range(nb_subkeys):
                subkey_name = _winreg.EnumKey(h_key, i)
                list_subkeys.append(subkey_name)
            # end for
        # end with
        # on retourne un tuple
        return (dict_values, list_subkeys)
    # end def
     
    # début du test (output: console IDLE)
     
    root_path = "SYSTEM/ControlSet001/Services"
    dict_values, list_subkeys = dump_subkey(root_path)
    # mettez 0 ou None pour enlever la bride
    nb_items = 10
    #nb_items = None
    if nb_items:
        sk_list = list_subkeys[:nb_items]
    else:
        sk_list = list_subkeys
    # end if
    # liste les nnn premiers
    # ou tout si bride enlevée
    for subkey in sk_list:
        sk_path = build_path(root_path, subkey)
        d_values, l_subkeys = dump_subkey(sk_path)
        if 'Start' in d_values:
            print "Key:", sk_path
            print "Subkeys:", l_subkeys
            print "Values:"
            for key, value in d_values.items():
                print key, "=", value
            # end for
            print "-" * 80
        # end if
    # end for
    ce qui veux dire dans la fin de votre code je teste les valeurs et les places dans un fichier pour organiser un rapport txt ?
    Vous disposez de données structurées : vous en faites bien ce que vous voulez (affichage console, affichage tkinter.Text() ou encore dump fichier.txt, etc).

    ce qui me surprends c'est la syntaxe des print, il n'y a pas de (
    c'est le print statement de Python2 : https://docs.python.org/2.7/referenc...mts.html#print

    voir la fonction print : https://docs.python.org/2.7/library/...ons.html#print

    si vous voulez la notation Python3, il vous faut mettre from __future__ import print_function en tête de script.

    un bout de teste ok

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    for subkey in list_subkeys[:nb_items]:
        sk_path = build_path(root_path, subkey)
        d_values, l_subkeys = dump_subkey(sk_path)
        if 'Start' in d_values:
     
            print "Subkeys:", l_subkeys
            for i in d_values:
                print "Values:", d_values[i], i
     
            print "Key:", sk_path
            print "-" * 80
    # end for
    Oui, vous pouvez simplifier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    for subkey in sk_list:
        sk_path = build_path(root_path, subkey)
        d_values, l_subkeys = dump_subkey(sk_path)
        if 'Start' in d_values:
            print "Key:", sk_path
            print "Subkeys:", l_subkeys
            print "Values:"
            for key, value in d_values.items():
                print key, "=", value
            # end for
            print "-" * 80
        # end if
    # end for
    @+.

  7. #7
    Membre confirmé Avatar de Thierry_V
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations forums :
    Inscription : Août 2013
    Messages : 153
    Par défaut
    bonjour,

    None, alors c'est python qui gère les fins de fichier eof() , je suis encore trop sur les anciens langages. C'est mieux cela évite un calcul supplémentaire.

    par contre : from __future__ import unicode_literals me donne une erreur ?

    a+ Tarball69

  8. #8
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Citation Envoyé par Thierry_V Voir le message
    bonjour,

    None, alors c'est python qui gère les fins de fichier eof() , je suis encore trop sur les anciens langages. C'est mieux cela évite un calcul supplémentaire.
    Non, non, n'allez pas chercher si loin : c'est tout simplement lié à ce que j'ai écrit tout de suite après :

    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
    # mettez 0 ou None pour enlever la bride
    nb_items = 10
    #nb_items = None
     
    # ici nb_items != None
    if nb_items:
     
        sk_list = list_subkeys[:nb_items] # on ne prend qu'une partie de la liste
     
    # ici nb_items est None ou 0
    else:
     
        sk_list = list_subkeys # on prend toute la liste
     
    # end if
    La liste list_subkeys contient toutes les sous-clés de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    root_path = "SYSTEM/ControlSet001/Services"
    dict_values, list_subkeys = dump_subkey(root_path)
    car tout simplement dans la fonction dump_subkey() vous avez :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nb_subkeys, nb_values, last_modified = _winreg.QueryInfoKey(h_key)
    _winreg.QueryInfoKey(h_key) vous permet de récupérer les infos sur une clé de registre donnée (lorsque cette clé est au moins ouverte en lecture seule).

    Comme vous pouvez le voir, on récupère nb_subkeys le nombre de sous-clés pour la clé h_key ouverte à ce moment-là.

    Et comme ensuite on boucle sur ce nombre nb_subkeys, on remplit la liste list_subkeys avec toutes les sous-clés de la clé h_key.

    ça n'a rien à voir avec EOF (End Of File) qui est un marqueur de fin de fichier.

    par contre : from __future__ import unicode_literals me donne une erreur ?

    a+ Tarball69
    Quel message d'erreur ?

    Merci de publier entre balises [CODE=text]votre message d'erreur en entier copié/collé ici[/CODE].

    Quelle version de Python2 avez-vous ? 2.6 ? 2.7 ?

    Doc : https://docs.python.org/3/library/__...ule-__future__

    @+.

  9. #9
    Membre confirmé Avatar de Thierry_V
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations forums :
    Inscription : Août 2013
    Messages : 153
    Par défaut
    Bonjour,

    d'accord je comprends mieux, c'est clair.

    et pour from __future__ import unicode_literals , je le mettais après les autres from
    il faut le mettre vraiment en tout début et je suis en python 2.7.8

    merci pour toutes ces explications.

  10. #10
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Thierry_V Voir le message
    il faut le mettre vraiment en tout début et je suis en python 2.7.8
    Oui, c'est ça.

    Pensez à cliquer si vous estimez que cette discussion est close.

    Merci.

    @+.

  11. #11
    Membre confirmé Avatar de Thierry_V
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations forums :
    Inscription : Août 2013
    Messages : 153
    Par défaut
    Oui, ayant compris le principe de la lecture et utilisation nous pouvons clore la discussion.
    Grand merci
    A bientôt
    Thierry

  12. #12
    Membre confirmé Avatar de Thierry_V
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations forums :
    Inscription : Août 2013
    Messages : 153
    Par défaut
    bonjour,

    tout fonctionne bien, sauf que pour certaines clés je suis confronté à un problème :
    UnicodeEncodeError: 'ascii' codec can't encode character u'\xf4' in position 5: ordinal not in range(128)

    l'encodage fonctionne pour une partie dans autres fonctions qui n'a rien à voir avec la lecture du registre avec :
    mon_decodage = variable.decode('cp850').encode('latin-1')

    le blocage se fait lorsque je veux mettre la lecture dans un fichier txt.
    en vérifiant le type est unicode.

    merci

  13. #13
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Thierry_V Voir le message
    bonjour,

    tout fonctionne bien, sauf que pour certaines clés je suis confronté à un problème :
    UnicodeEncodeError: 'ascii' codec can't encode character u'\xf4' in position 5: ordinal not in range(128)
    C'est vague. Pourriez-vous publier un copié/collé du message d'erreur complet, svp ?

    Malgré l'en-tête et l'import from __future__ import unicode_literals ?

    normalement, avec cet import vous n'avez plus besoin de décoder/réencoder.

    l'encodage fonctionne pour une partie dans autres fonctions qui n'a rien à voir avec la lecture du registre avec :
    mon_decodage = variable.decode('cp850').encode('latin-1')

    le blocage se fait lorsque je veux mettre la lecture dans un fichier txt.
    xf4 c'est dans le cp1252?

    merci
    Avez-vous essayé sans décoder/réencoder pour voir ?

    Pourriez-vous publier le code concerné ?

    Sinon, oui, chez MS-Windows le charset est souvent cp1252 par défaut (à vérifier quand même, je ne suis pas très au fait de ce qui se fait sur Windows).

    @+.

  14. #14
    Membre confirmé Avatar de Thierry_V
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations forums :
    Inscription : Août 2013
    Messages : 153
    Par défaut
    bonjour,

    Oui malgré from __future__ import unicode_literals


    l'erreur donnée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Traceback (most recent call last):
      File "D:\Developpement\GUW Final\essai_service.py", line 97, in <module>
        fichier.write("Nom d'affichage   < "+x+" > Donnees : "+d_values[x].decode('cp850').encode('utf-8'))
      File "C:\Python27\lib\encodings\cp850.py", line 15, in decode
        return codecs.charmap_decode(input,errors,decoding_table)
    UnicodeEncodeError: 'ascii' codec can't encode character u'\xf4' in position 5: ordinal not in range(128)

    partie du code
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
     
     
    # entete du code
    #! /usr/bin/python
    #-*- coding:utf-8 -*-
    # Python 2.7.8
    from __future__ import unicode_literals
     
     
    # ouverture du fichier en ajout car existe deja avec entete
     
    with open('Services.txt', 'a') as fichier:
     
        for subkey in list_subkeys[:nb_items]:
     
            sk_path = build_path(root_path, subkey)
            d_values, l_subkeys = dump_subkey(sk_path)
     
            fichier.write("=" * 80+'\n\r')
            fichier.write("Key:"+ sk_path+'\n\r')
            if l_subkeys != []:
                fichier.write("Sous-cle(s) attachee(s) :"+ str(l_subkeys)+'\n\r')
            else:
                fichier.write("Aucune Sous-cle attachee :"+'\n\r')
     
            fichier.write("-" * 80+'\n\r')
     
            if 'DriverPackageId' in d_values or \
               'DisplayName' in d_values or \
               'Description' in d_values or \
               'ImagePath' in d_values or \
               'RequiredPrivileges' in d_values or\
               'DependOnService' in d_values or\
               'ServiceSidType' in d_values:
     
     
                for x in d_values:
                    if x == 'DriverPackageId':
                        fichier.write("Pilote Package ID < "+x+" > Donnees : "+d_values[x])
                    if x == 'DisplayName':
                        fichier.write("Nom d'affichage   < "+x+" > Donnees : "+d_values[x].decode('cp850').encode('utf-8'))            <------------ 
                    if x == 'Description':
                        fichier.write("Description       < "+x+" > Donnees : "+d_values[x])
                    if x == 'ImagePath':
                        fichier.write("Chemin de l'image < "+x+" > Donnees : "+d_values[x])
                    if x == 'RequiredPrivileges':
                        fichier.write("privileges requis < "+x+"\n\r"+d_values[x] )                   
                    if x == 'DependOnService':
                        fichier.write('Dependence(s) service(s) < '+x+' > Donnees : '+d_values[x])

  15. #15
    Invité
    Invité(e)
    Par défaut
    Et vous avez essayé en enlevant .decode('cp850').encode('utf-8') à d_values[x].decode('cp850').encode('utf-8') pour voir ?

  16. #16
    Membre confirmé Avatar de Thierry_V
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations forums :
    Inscription : Août 2013
    Messages : 153
    Par défaut
    oui j'ai cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Traceback (most recent call last):
      File "D:\Developpement\GUW Final\essai_service.py", line 97, in <module>
        fichier.write("Nom d'affichage   < "+x+" > Donnees : "+d_values[x]) 
    UnicodeEncodeError: 'ascii' codec can't encode character u'\xf4' in position 49: ordinal not in range(128)

  17. #17
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Thierry_V Voir le message
    oui j'ai cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Traceback (most recent call last):
      File "D:\Developpement\GUW Final\essai_service.py", line 97, in <module>
        fichier.write("Nom d'affichage   < "+x+" > Donnees : "+d_values[x]) 
    UnicodeEncodeError: 'ascii' codec can't encode character u'\xf4' in position 49: ordinal not in range(128)
    OK, dès que je passe sous Windows, je regarde ça de plus près.

    @+.

  18. #18
    Membre confirmé Avatar de Thierry_V
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations forums :
    Inscription : Août 2013
    Messages : 153
    Par défaut
    ok merci Tarball69

  19. #19
    Invité
    Invité(e)
    Par défaut
    Bon voilà,

    Chez moi (Windows 8), ce code fonctionne parfaitement :

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
     
    from __future__ import unicode_literals
    import os
    import _winreg
     
    def win_path (path_str):
        "reconstruit un chemin conforme à Windows"
        return os.path.normpath(str(path_str))
    # end def
     
    def build_path (path_str, *args):
        "construit un chemin conforme à Windows"
        return win_path(os.path.join(path_str, *args))
    # end def
     
    def dump_subkey (path_str):
        """
            retourne un dict() de valeurs et une list() des sous-clés d'une
            clé de registre donnée; on peut aussi se servir de cette
            fonction en récursivité dans une arborescence;
        """
        dict_values = dict()
        list_subkeys = list()
        with _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, win_path(path_str)) as h_key:
            nb_subkeys, nb_values, last_modified = _winreg.QueryInfoKey(h_key)
            # on remplit le dict() de valeurs
            for i in range(nb_values):
                kv_name, kv_value, kv_type = _winreg.EnumValue(h_key, i)
                dict_values[kv_name] = kv_value
            # end for
            # on remplit la liste de noms de sous-clés
            for i in range(nb_subkeys):
                subkey_name = _winreg.EnumKey(h_key, i)
                list_subkeys.append(subkey_name)
            # end for
        # end with
        # on retourne un tuple
        return (dict_values, list_subkeys)
    # end def
     
    # début du programme
     
    root_path = "SYSTEM/ControlSet001/Services"
    dict_values, list_subkeys = dump_subkey(root_path)
     
    # mettez 0 ou None pour enlever la bride
    nb_items = 50
    # si bride
    if nb_items:
        # on prend qu'une partie
        sk_list = list_subkeys[:nb_items]
    # sinon
    else:
        # on prend toute la liste
        sk_list = list_subkeys
    # end if
     
    # d'abord on fait un traitement complet...
     
    # mappage de données à traiter
    map_values = {
        'DriverPackageId':      "Pilote Package ID < {0} > Données : {1}",
        'DisplayName':          "Nom d'affichage   < {0} > Données : {1}",
        'Description':          "Description       < {0} > Données : {1}",
        'ImagePath':            "Chemin de l'image < {0} > Données : {1}",
        'RequiredPrivileges':   "Privilèges requis < {0} >\n--> {1}",
        'DependOnService':      "Dépendance(s) service(s) < {0} > Données : {1}",
    }
     
    # stockons nos données sous forme de liste Python
    # 1 ligne de texte = 1 élément de liste
    data = list()
     
    # ajoutez votre en-tête de fichier ici
    data.append("En-tête fichier ligne 1")
    data.append("En-tête fichier ligne 2")
    data.append("En-tête fichier ligne 3")
     
    # on parcourt les sous-clés
    for subkey in list_subkeys[:nb_items]:
        # extraction de données
        sk_path = build_path(root_path, subkey)
        d_values, l_subkeys = dump_subkey(sk_path)
        # on ajoute une ligne d'information
        data.append("=" * 80)
        data.append("Key: {0}".format(sk_path))
        # sous-clés attachées
        if l_subkeys:
            data.append(
                "Sous-clé(s) attachée(s) : {0}".format(", ".join(l_subkeys))
            )
        else:
            data.append("Aucune Sous-clé attachée.")
        # end if
        # valeurs attachées
        for key, value in d_values.items():
            # on récupère le texte du mappage
            # en fct de la clé de dictionnaire
            label = map_values.get(key)
            # on a quelque chose ?
            if label:
                # c'est une liste Python ?
                if isinstance(value, list):
                    # on la transforme en énumération texte
                    value = ", ".join(value)
                # end if
                # on traite la ligne selon les données
                data.append(label.format(key, value))
            # end if
        # end for
        ##data.append("-" * 80)
    # end for
     
    # ...ensuite seulement on enregistre dans un fichier
    with open('Services.txt', 'w') as fichier:
        # il faut forcer le fichier en unicode UTF-8
        # à cause des caractères spéciaux
        fichier.write(unicode("\n".join(data)).encode("utf-8"))
    # end with
    Contenu du fichier 'Services.txt' (ouvert dans notepad.exe, le bloc-notes) :

    Code text : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    En-tête fichier ligne 1
    En-tête fichier ligne 2
    En-tête fichier ligne 3
    ================================================================================
    Key: SYSTEM\ControlSet001\Services\.NET CLR Data
    Sous-clé(s) attachée(s) : Linkage, Performance
    ================================================================================
    Key: SYSTEM\ControlSet001\Services\.NET CLR Networking
    Sous-clé(s) attachée(s) : Linkage, Performance
    ================================================================================
    Key: SYSTEM\ControlSet001\Services\.NET CLR Networking 4.0.0.0
    Sous-clé(s) attachée(s) : Linkage, Performance
    ================================================================================
    Key: SYSTEM\ControlSet001\Services\.NET Data Provider for Oracle
    Sous-clé(s) attachée(s) : Linkage, Performance
    ================================================================================
    Key: SYSTEM\ControlSet001\Services\.NET Data Provider for SqlServer
    Sous-clé(s) attachée(s) : Linkage, Performance
    ================================================================================
    Key: SYSTEM\ControlSet001\Services\.NET Memory Cache 4.0
    Sous-clé(s) attachée(s) : Linkage, Performance
    ================================================================================
    Key: SYSTEM\ControlSet001\Services\.NETFramework
    Sous-clé(s) attachée(s) : Performance
    ================================================================================
    Key: SYSTEM\ControlSet001\Services\1394ohci
    Aucune Sous-clé attachée.
    Chemin de l'image < ImagePath > Données : \SystemRoot\System32\drivers\1394ohci.sys
    Nom d'affichage   < DisplayName > Données : @1394.inf,%PCI\CC_0C0010.DeviceDesc%;1394 OHCI Compliant Host Controller
    ================================================================================
    Key: SYSTEM\ControlSet001\Services\3ware
    Sous-clé(s) attachée(s) : Parameters, StartOverride
    Chemin de l'image < ImagePath > Données : System32\drivers\3ware.sys
    ================================================================================
    Key: SYSTEM\ControlSet001\Services\ACPI
    Sous-clé(s) attachée(s) : Parameters, Enum
    Chemin de l'image < ImagePath > Données : System32\drivers\ACPI.sys
    Nom d'affichage   < DisplayName > Données : @acpi.inf,%ACPI.SvcDesc%;Microsoft ACPI Driver
    ================================================================================
    Key: SYSTEM\ControlSet001\Services\acpiex
    Sous-clé(s) attachée(s) : Parameters
    Chemin de l'image < ImagePath > Données : System32\Drivers\acpiex.sys
    Nom d'affichage   < DisplayName > Données : Microsoft ACPIEx Driver
    ================================================================================
    Key: SYSTEM\ControlSet001\Services\acpipagr
    Aucune Sous-clé attachée.
    Chemin de l'image < ImagePath > Données : \SystemRoot\System32\drivers\acpipagr.sys
    Nom d'affichage   < DisplayName > Données : @acpipagr.inf,%SvcDesc%;ACPI Processor Aggregator Driver
    ================================================================================
    Key: SYSTEM\ControlSet001\Services\AcpiPmi
    Aucune Sous-clé attachée.
    Chemin de l'image < ImagePath > Données : \SystemRoot\System32\drivers\acpipmi.sys
    Nom d'affichage   < DisplayName > Données : @acpipmi.inf,%AcpiPmi.SvcDesc%;ACPI Power Meter Driver
    ================================================================================
    Key: SYSTEM\ControlSet001\Services\acpitime
    Aucune Sous-clé attachée.
    Chemin de l'image < ImagePath > Données : \SystemRoot\System32\drivers\acpitime.sys
    Nom d'affichage   < DisplayName > Données : @acpitime.inf,%AcpiTime.SvcDesc%;ACPI Wake Alarm Driver
    ================================================================================
    Key: SYSTEM\ControlSet001\Services\adp94xx
    Sous-clé(s) attachée(s) : Parameters, StartOverride
    Chemin de l'image < ImagePath > Données : System32\drivers\adp94xx.sys
    ================================================================================
    Key: SYSTEM\ControlSet001\Services\adpahci
    Sous-clé(s) attachée(s) : Parameters, StartOverride
    Chemin de l'image < ImagePath > Données : System32\drivers\adpahci.sys
    ================================================================================
    Key: SYSTEM\ControlSet001\Services\adpu320
    Sous-clé(s) attachée(s) : Parameters, StartOverride
    Chemin de l'image < ImagePath > Données : System32\drivers\adpu320.sys
    ================================================================================
    Key: SYSTEM\ControlSet001\Services\adsi
    Sous-clé(s) attachée(s) : Cache, Options, tracing
    ================================================================================
    Key: SYSTEM\ControlSet001\Services\AeLookupSvc
    Sous-clé(s) attachée(s) : Parameters, TriggerInfo
    Privilèges requis < RequiredPrivileges >
    --> SeTcbPrivilege, SeImpersonatePrivilege
    Chemin de l'image < ImagePath > Données : %systemroot%\system32\svchost.exe -k netsvcs
    Nom d'affichage   < DisplayName > Données : @%SystemRoot%\system32\aelupsvc.dll,-1
    Description       < Description > Données : @%SystemRoot%\system32\aelupsvc.dll,-2
    ================================================================================
    Key: SYSTEM\ControlSet001\Services\AFD
    Sous-clé(s) attachée(s) : Parameters
    Chemin de l'image < ImagePath > Données : \SystemRoot\system32\drivers\afd.sys
    Description       < Description > Données : @%systemroot%\system32\drivers\afd.sys,-1000
    Nom d'affichage   < DisplayName > Données : @%systemroot%\system32\drivers\afd.sys,-1000
    ================================================================================
    Key: SYSTEM\ControlSet001\Services\AgereSoftModem
    Aucune Sous-clé attachée.
    Chemin de l'image < ImagePath > Données : \SystemRoot\system32\DRIVERS\agrsm64.sys
    Nom d'affichage   < DisplayName > Données : @mdmags64.inf,%FullProductName%;Agere Systems Soft Modem
    ================================================================================
    Key: SYSTEM\ControlSet001\Services\agp440
    Sous-clé(s) attachée(s) : StartOverride
    Chemin de l'image < ImagePath > Données : System32\drivers\agp440.sys
    Nom d'affichage   < DisplayName > Données : @machine.inf,%agp440_svcdesc%;Intel AGP Bus Filter
    ================================================================================
    Key: SYSTEM\ControlSet001\Services\AiCharger
    Sous-clé(s) attachée(s) : Enum
    Chemin de l'image < ImagePath > Données : \SystemRoot\system32\DRIVERS\AiCharger.sys
    Nom d'affichage   < DisplayName > Données : ASUS Charger Driver
    ================================================================================
    Key: SYSTEM\ControlSet001\Services\ALG
    Aucune Sous-clé attachée.
    Privilèges requis < RequiredPrivileges >
    --> SeChangeNotifyPrivilege, SeCreateGlobalPrivilege, SeImpersonatePrivilege
    Chemin de l'image < ImagePath > Données : %SystemRoot%\System32\alg.exe
    Nom d'affichage   < DisplayName > Données : @%SystemRoot%\system32\Alg.exe,-112
    Description       < Description > Données : @%SystemRoot%\system32\Alg.exe,-113
    ================================================================================
    Key: SYSTEM\ControlSet001\Services\AllUserInstallAgent
    Sous-clé(s) attachée(s) : Parameters, TriggerInfo
    Privilèges requis < RequiredPrivileges >
    --> SeImpersonatePrivilege, SeTcbPrivilege
    Chemin de l'image < ImagePath > Données : %SystemRoot%\System32\svchost.exe -k LocalSystemNetworkRestricted
    Nom d'affichage   < DisplayName > Données : @%SystemRoot%\System32\AUInstallAgent.dll,-101
    Description       < Description > Données : @%SystemRoot%\System32\AUInstallAgent.dll,-100
    Dépendance(s) service(s) < DependOnService > Données : RPCSS
    ================================================================================
    Key: SYSTEM\ControlSet001\Services\AmdK8
    Aucune Sous-clé attachée.
    Chemin de l'image < ImagePath > Données : \SystemRoot\System32\drivers\amdk8.sys
    Nom d'affichage   < DisplayName > Données : @cpu.inf,%AmdK8.SvcDesc%;AMD K8 Processor Driver
    ================================================================================
    Key: SYSTEM\ControlSet001\Services\AmdPPM
    Aucune Sous-clé attachée.
    Chemin de l'image < ImagePath > Données : \SystemRoot\System32\drivers\amdppm.sys
    Nom d'affichage   < DisplayName > Données : @cpu.inf,%AmdPPM.SvcDesc%;AMD Processor Driver
    ================================================================================
    Key: SYSTEM\ControlSet001\Services\amdsata
    Sous-clé(s) attachée(s) : Parameters, StartOverride
    Chemin de l'image < ImagePath > Données : System32\drivers\amdsata.sys
    ================================================================================
    Key: SYSTEM\ControlSet001\Services\amdsbs
    Sous-clé(s) attachée(s) : Parameters, Settings, StartOverride
    Chemin de l'image < ImagePath > Données : System32\drivers\amdsbs.sys
    ================================================================================
    Key: SYSTEM\ControlSet001\Services\amdxata
    Sous-clé(s) attachée(s) : Parameters, StartOverride
    Chemin de l'image < ImagePath > Données : System32\drivers\amdxata.sys
    ================================================================================
    Key: SYSTEM\ControlSet001\Services\AMPPAL
    Sous-clé(s) attachée(s) : Parameters, Enum
    Chemin de l'image < ImagePath > Données : \SystemRoot\System32\drivers\AMPPAL.sys
    Nom d'affichage   < DisplayName > Données : @oem11.inf,%AMPPAL.SVCDESC%;Intel(r) Centrino(r) Wireless Bluetooth(r) + High Speed Virtual Adapter
    ================================================================================
    Key: SYSTEM\ControlSet001\Services\AMPPALP
    Sous-clé(s) attachée(s) : Linkage, Parameters
    Nom d'affichage   < DisplayName > Données : @oem12.inf,%AMPPALP_Desc%;Intel(r) Centrino(r) Wireless Bluetooth(r) + High Speed Protocol
    Description       < Description > Données : @oem12.inf,%AMPPALP_Desc%;Intel(r) Centrino(r) Wireless Bluetooth(r) + High Speed Protocol
    Chemin de l'image < ImagePath > Données : \SystemRoot\system32\DRIVERS\amppal.sys
    ================================================================================
    Key: SYSTEM\ControlSet001\Services\AMPPALR3
    Aucune Sous-clé attachée.
    Chemin de l'image < ImagePath > Données : C:\Program Files\Intel\BluetoothHS\BTHSAmpPalService.exe
    Nom d'affichage   < DisplayName > Données : Intel® Centrino® Wireless Bluetooth® + High Speed Service
    ================================================================================
    Key: SYSTEM\ControlSet001\Services\AppID
    Sous-clé(s) attachée(s) : Parameters
    Chemin de l'image < ImagePath > Données : \SystemRoot\system32\drivers\appid.sys
    Nom d'affichage   < DisplayName > Données : @%systemroot%\system32\appidsvc.dll,-102
    Description       < Description > Données : @%systemroot%\system32\appidsvc.dll,-103
    Dépendance(s) service(s) < DependOnService > Données : FltMgr, DisCache
    ================================================================================
    Key: SYSTEM\ControlSet001\Services\AppIDSvc
    Sous-clé(s) attachée(s) : Parameters, TriggerInfo
    Privilèges requis < RequiredPrivileges >
    --> SeChangeNotifyPrivilege, SeImpersonatePrivilege
    Chemin de l'image < ImagePath > Données : %SystemRoot%\system32\svchost.exe -k LocalServiceNetworkRestricted
    Description       < Description > Données : @%systemroot%\system32\appidsvc.dll,-101
    Dépendance(s) service(s) < DependOnService > Données : RpcSs, AppID, CryptSvc
    Nom d'affichage   < DisplayName > Données : @%systemroot%\system32\appidsvc.dll,-100
    ================================================================================
    Key: SYSTEM\ControlSet001\Services\Appinfo
    Sous-clé(s) attachée(s) : Parameters, Security
    Privilèges requis < RequiredPrivileges >
    --> SeAssignPrimaryTokenPrivilege, SeIncreaseQuotaPrivilege, SeTcbPrivilege, SeBackupPrivilege, SeRestorePrivilege, SeDebugPrivilege, SeAuditPrivilege, SeChangeNotifyPrivilege, SeImpersonatePrivilege
    Chemin de l'image < ImagePath > Données : %SystemRoot%\system32\svchost.exe -k netsvcs
    Nom d'affichage   < DisplayName > Données : @%systemroot%\system32\appinfo.dll,-100
    Description       < Description > Données : @%systemroot%\system32\appinfo.dll,-101
    Dépendance(s) service(s) < DependOnService > Données : RpcSs, ProfSvc
    ================================================================================
    Key: SYSTEM\ControlSet001\Services\arc
    Sous-clé(s) attachée(s) : Parameters, StartOverride
    Chemin de l'image < ImagePath > Données : System32\drivers\arc.sys
    ================================================================================
    Key: SYSTEM\ControlSet001\Services\arcsas
    Sous-clé(s) attachée(s) : Parameters, StartOverride
    Chemin de l'image < ImagePath > Données : System32\drivers\arcsas.sys
    Nom d'affichage   < DisplayName > Données : @arcsas.inf,%arcsas_ServiceName%;Adaptec SAS/SATA-II RAID Windows Inbox Miniport Driver
    ================================================================================
    Key: SYSTEM\ControlSet001\Services\ASLDRService
    Aucune Sous-clé attachée.
    Chemin de l'image < ImagePath > Données : C:\Program Files (x86)\ASUS\ATK Package\ATK Hotkey\ASLDRSrv.exe
    Nom d'affichage   < DisplayName > Données : ASLDR Service
    ================================================================================
    Key: SYSTEM\ControlSet001\Services\ASMMAP64
    Aucune Sous-clé attachée.
    Chemin de l'image < ImagePath > Données : \??\C:\Program Files (x86)\ASUS\ATK Package\ATKGFNEX\ASMMAP64.sys
    Nom d'affichage   < DisplayName > Données : ASMMAP64
    ================================================================================
    Key: SYSTEM\ControlSet001\Services\aswHwid
    Aucune Sous-clé attachée.
    Chemin de l'image < ImagePath > Données : \SystemRoot\system32\drivers\aswHwid.sys
    Nom d'affichage   < DisplayName > Données : avast! HardwareID
    Description       < Description > Données : avast! HardwareID
    ================================================================================
    Key: SYSTEM\ControlSet001\Services\aswMonFlt
    Sous-clé(s) attachée(s) : Instances
    Chemin de l'image < ImagePath > Données : \SystemRoot\system32\drivers\aswMonFlt.sys
    Nom d'affichage   < DisplayName > Données : aswMonFlt
    Description       < Description > Données : avast! mini-filter driver (aswMonFlt)
    Dépendance(s) service(s) < DependOnService > Données : FltMgr
    ================================================================================
    Key: SYSTEM\ControlSet001\Services\aswRdr
    Sous-clé(s) attachée(s) : Parameters
    Chemin de l'image < ImagePath > Données : \SystemRoot\system32\drivers\aswRdr2.sys
    Nom d'affichage   < DisplayName > Données : aswRdr
    Description       < Description > Données : avast! WFP Redirect driver
    Dépendance(s) service(s) < DependOnService > Données : tcpip
    ================================================================================
    Key: SYSTEM\ControlSet001\Services\aswRvrt
    Sous-clé(s) attachée(s) : Parameters
    Nom d'affichage   < DisplayName > Données : avast! Revert
    ================================================================================
    Key: SYSTEM\ControlSet001\Services\aswSnx
    Sous-clé(s) attachée(s) : Instances, Parameters
    Chemin de l'image < ImagePath > Données : \SystemRoot\system32\drivers\aswSnx.sys
    Nom d'affichage   < DisplayName > Données : aswSnx
    Description       < Description > Données : avast! virtualization driver (aswSnx)
    Dépendance(s) service(s) < DependOnService > Données : FltMgr
    ================================================================================
    Key: SYSTEM\ControlSet001\Services\aswSP
    Sous-clé(s) attachée(s) : Instances, Parameters
    Chemin de l'image < ImagePath > Données : \SystemRoot\system32\drivers\aswSP.sys
    Description       < Description > Données : avast! Self Protection
    Nom d'affichage   < DisplayName > Données : aswSP
    Dépendance(s) service(s) < DependOnService > Données : FltMgr
    ================================================================================
    Key: SYSTEM\ControlSet001\Services\aswStm
    Sous-clé(s) attachée(s) : Parameters
    Chemin de l'image < ImagePath > Données : \SystemRoot\system32\drivers\aswStm.sys
    Nom d'affichage   < DisplayName > Données : aswStm
    Description       < Description > Données : avast! StreamFilter Callout Driver
    Dépendance(s) service(s) < DependOnService > Données : tcpip
    ================================================================================
    Key: SYSTEM\ControlSet001\Services\aswVmm
    Sous-clé(s) attachée(s) : Parameters
    Nom d'affichage   < DisplayName > Données : avast! VM Monitor
    Description       < Description > Données : avast! VM Monitor
    ================================================================================
    Key: SYSTEM\ControlSet001\Services\AsyncMac
    Aucune Sous-clé attachée.
    Chemin de l'image < ImagePath > Données : \SystemRoot\system32\DRIVERS\asyncmac.sys
    Nom d'affichage   < DisplayName > Données : @%systemroot%\system32\rascfg.dll,-32000
    Description       < Description > Données : @%systemroot%\system32\rascfg.dll,-32000
    ================================================================================
    Key: SYSTEM\ControlSet001\Services\atapi
    Sous-clé(s) attachée(s) : StartOverride
    Chemin de l'image < ImagePath > Données : System32\drivers\atapi.sys
    Nom d'affichage   < DisplayName > Données : @mshdc.inf,%idechannel.DeviceDesc%;IDE Channel
    

    Il fallait traiter avec unicode(...données texte...).encode("utf-8") finalement.

    @+.

  20. #20
    Membre confirmé Avatar de Thierry_V
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations forums :
    Inscription : Août 2013
    Messages : 153
    Par défaut
    bonsoir,


    si je modifie mon code

    je dois enlevé '\n' à gauche de joint car il affiche un caractère l'un en dessous de l'autre

    fichier.write(unicode("".join("Pilote Package ID < "+x+" > Données : "+d_values[x]+'\n\r')).encode("utf-8"))
    fichier.write(unicode("".join("Nom d'affichage < "+x+" > Données : "+d_values[x]+'\n\r')).encode("utf-8"))
    fichier.write(unicode("".join("Description < "+x+" > Données : "+d_values[x]+'\n\r')).encode("utf-8"))

    le décodage est ok, mais pourquoi la deuxième ligne est placée au de la première et que la troisième est correcte ?

    alors la premier ligne from __future__ import unicode_literals ne sert à rien ?


    merci de ton aide et ta patience

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. RegEnumValue() pour la lecture de registre
    Par scarlaty dans le forum Windows
    Réponses: 5
    Dernier message: 28/02/2008, 09h04
  2. Lecture du Registre Windows
    Par mourbare dans le forum Windows
    Réponses: 2
    Dernier message: 27/02/2008, 08h42
  3. Lecture du registre style parseur
    Par Verbalinsurection dans le forum C++
    Réponses: 4
    Dernier message: 19/10/2007, 15h15
  4. [CR9] Lecture du registre
    Par exyacc dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 04/11/2005, 11h17
  5. Réponses: 4
    Dernier message: 23/07/2003, 13h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo