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

Windows Forms Discussion :

[VB .NET] Chercher une valeur hexadecimale dans un REG_BINARY


Sujet :

Windows Forms

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 16
    Points : 13
    Points
    13
    Par défaut [VB .NET] Chercher une valeur hexadecimale dans un REG_BINARY
    Bonjour,

    Je récupere une valeur de la base de registre windows. Cette valeur est une REG_BINARY.

    Dans cette valeur REG_BINARY, je cherche une valeur en binaire que je connais.

    En faite je veux chercher un mot :
    "h y p e r i o n" : valeur binaire : 68 00 79 00 70 00 65 00 72 00 69 00 6F 00 6E 00
    dans cette valeur REG_BINARY= "2AF9835"=hex:01,00,00,00,56,00,00,00,42,00,00,00,63,00,3a,00,5c,00,75,00,73,\
    00,65,00,72,00,5c,00,75,00,31,00,31,00,37,00,37,00,34,00,36,00,5c,00,64,00,\
    65,00,6d,00,61,00,72,00,72,00,65,00,5c,00,65,00,78,00,63,00,65,00,6c,00,5c,\ 00,65,00,73,00,73,00,65,00,78,00,63,00,6c,00,6e,00,2e,00,78,00,6c,00,6c,00,\
    00,00,68,00,79,00,70,00,65,00,72,00,69,00,6f,00,6e,00,20,00,65,00,73,00,73,\
    00,62,00,61,00,73,00,65,00,20,00,6f,00,6c,00,61,00,70,00,20,00,73,00,65,00,\
    72,00,76,00,65,00,72,00,20,00,64,00,6c,00,6c,00,00,00

    (*je l'ai mis en gras ici, car elle s'y trouve bien)

    Et c'est la que je bloque, car je ne vois pas comment chercher dans cette valeur REG_BINARY, qui se matérialise par un tableau de byte(), ma valeur mon mot que j'ai transformé en binaire ...

    J'ai commencé ce code, mais la question reste en commentaire ...

    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
    
    PublicFunction fctTest(ByVal value AsString) AsBoolean
    Dim regKey As RegistryKey
    Dim intAddin, i AsInteger
    Dim tmp AsByte()
    Dim Log AsNew LogGenerator
    regKey = Registry.CurrentUser.OpenSubKey("valeurBinaire", False)
    tmp = regKey.GetValue(value)
     
    'TODO FAIRE LA COMPARAISON entre ma value qui est un string mais qui 
    peux être un tableau de byte() et ma valeur que j'ai en registre ....
     
    
    fctTest= True
    regKey.Close()
    EndFunction
    
    En vous remerciant par avance de votre aide.

    Michael

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 16
    Points : 13
    Points
    13
    Par défaut
    Je réponds à mes propres questions.

    Mais après avoir chercher toute cette soirée j'ai trouvé la solution.

    En effet, il faut convertir le tableau de byte() prise dans la base de regitre en valeur hexadécimal grace à la fonction :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim valeurBinaire AsString = BitConverter.ToString(tmp).ToString().ToUpper
    Exemple de résultat :
    10/05/2006 23:53:16:438 - [TRACE] - addinDesactivate - Valeur binaire lue dans la base de registre : 01-00-00-00-56-00-00-00-42-00-00-00-63-00-3A-00-5C-00-75-00-73-00-65-00-72-00-5C-00-75-00-31-00-31-00-37-00-37-00-34-00-36-00-5C-00-64-00-65-00-6D-00-61-00-72-00-72-00-65-00-5C-00-65-00-78-00-63-00-65-00-6C-00-5C-00-65-00-73-00-73-00-65-00-78-00-63-00-6C-00-6E-00-2E-00-78-00-6C-00-6C-00-00-00-68-00-79-00-70-00-65-00-72-00-69-00-6F-00-6E-00-20-00-65-00-73-00-73-00-62-00-61-00-73-00-65-00-20-00-6F-00-6C-00-61-00-70-00-20-00-73-00-65-00-72-00-76-00-65-00-72-00-20-00-64-00-6C-00-6C-00-00-00

    Puis Convertir la chaine que l'on recherche en hexadecimal :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    'Encoding en hexadecimal de la chaine hyperion avec des espace NUL pour mon cas
    Dim valString AsByte() = System.Text.ASCIIEncoding.UTF8.GetBytes("h" &
     Chr(0) & "y" & Chr(0) & "p" & Chr(0) & "e" & Chr(0) & "r" & Chr(0) & "i" &
     Chr(0) & "o" & Chr(0) & "n")
    'return 
    identifiedAddinHyperion = BitConverter.ToString(valString).ToString()

    Pour exemple de résultat :
    10/05/2006 23:53:16:448 - [TRACE] - addinDesactivate - Valeur de recherche : 68-00-79-00-70-00-65-00-72-00-69-00-6F-00-6E

    Enfin, il suffit de comparer si une chaine appartient à une autre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If (InStr(valeurBinaire, valeurSearch) > 0) Then ...

    Voila pour ceux que ca interesse.

    Michael


+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Chercher une valeur particuliére dans une ligne
    Par AI_LINUX dans le forum Excel
    Réponses: 3
    Dernier message: 18/05/2015, 18h08
  2. Réponses: 15
    Dernier message: 14/08/2009, 14h45
  3. Réponses: 10
    Dernier message: 23/05/2006, 17h42
  4. [vb.net] retourner une valeur dans l'evenement click
    Par graphicsxp dans le forum Windows Forms
    Réponses: 3
    Dernier message: 27/05/2005, 13h06
  5. Réponses: 4
    Dernier message: 07/04/2005, 13h37

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