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

C# Discussion :

Valeur binary a écrire dans le registre


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    281
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 281
    Par défaut Valeur binary a écrire dans le registre
    Bonjour à tous,

    Je voudrais écrire cette clé et cette valeur dans le registre Windows

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    [HKEY_LOCAL_MACHINE\System\DPAPIKeys\default] 
    @=hex:02,00,f4,01,00,00,08,10,c7,33,33,ea,69,ba,7c,3e,67,15,d2,82,ef,6f,33,e8,\ 
      23,5a,f2,e6,fe,5d,63,64,7a,98,24,58,db,4c,84,e3,8c,2d,02,ef,1b,cb,21,83,19,de,\ 
      8f,30
    Il s'agit d'une valeur binary a écrire.

    Voila ce que j'ai tenté :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Registrykey key = Registry.LocalMachine.CreateSubKey(@"\System\DPAPIKeys\default");
    string hexstring = "02,00,f4,01,00,00,08,10,c7,33,33,ea,69,ba,7c,3e,67,15,d2,82,ef,6f,33,e8,23,5a,f2,e6,fe,5d,63,64,7a,98,24,58,db,4c,84,e3,8c,2d,02,ef,1b,cb,21,83,19,de,8f,30";
    byte[] b1 = System.Text.Encoding.ASCII.GetBytes(hexstring);
    key.SetValue("Default", b1, RegistryValueKind.Binary);
    Le problème est que voici ce qui est crée dans le registre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    [HKEY_LOCAL_MACHINE\System\DPAPIKeys\default]
    @=hex:\
          30,32,2C,30,30,2C,66,34,2C,30,31,2C,30,30,2C,30,30,2C,30,38,2C,31,30,2C,63,\
          37,2C,33,33,2C,33,33,2C,65,61,2C,36,39,2C,62,61,2C,37,63,2C,33,65,2C,36,37,\
          2C,31,35,2C,64,32,2C,38,32,2C,65,66,2C,36,66,2C,33,33,2C,65,38,2C,32,33,2C,\
          35,61,2C,66,32,2C,65,36,2C,66,65,2C,35,64,2C,36,33,2C,36,34,2C,37,61,2C,39,\
          38,2C,32,34,2C,35,38,2C,64,62,2C,34,63,2C,38,34,2C,65,33,2C,38,63,2C,32,64,\
          2C,30,32,2C,65,66,2C,31,62,2C,63,62,2C,32,31,2C,38,33,2C,31,39,2C,64,65,2C,\
          38,66,2C,33,30
    Avez vous une idée ? j'ai éssayé en remplacent ASCII par UTF8, et j'obtiens la même chose.

    Merci à tous

    Cordialement,

    Nixeus

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2006
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2006
    Messages : 197
    Par défaut
    Dans ton exemple tu encode un string en byte[].
    Quand tu converti en byte, ce n'est pas la valeur hexa qui est convertie mais la valeur du charactère.

    Voila des exemples de conversion :
    http://stackoverflow.com/questions/3...-to-byte-array

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Pourquoi passer par une chaine de caractères si tu connais déjà les valeurs des bytes ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Registrykey key = Registry.LocalMachine.CreateSubKey(@"\System\DPAPIKeys\default");
    byte[] bytes = new byte[] { 0x02,0x00,0xf4,0x01,0x00,0x00,0x08,0x10,0xc7,0x33,0x33,0xea,0x69,0xba,0x7c,0x3e,0x67,0x15,0xd2,0x82,0xef,0x6f,0x33,0xe8,0x23,0x5a,0xf2,0xe6,0xfe,0x50xd,0x63,0x64,0x7a,0x98,0x24,0x58,0xdb,0x4c,0x84,0xe3,0x8c,0x2d,0x02,0xef,0x1b,0xcb,0x21,0x83,0x19,0xde,0x8f,0x30};
    key.SetValue("Default", bytes, RegistryValueKind.Binary);
    Bon, c'est vrai que c'est pas forcément très pratique... Sinon tu peux faire quelque chose comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    byte[] bytes = hexString.Split(',').Select(s => byte.Parse(s)).ToArray();

Discussions similaires

  1. Autoriser IUSR à écrire dans le registre
    Par Tristan Zwingelstein dans le forum IIS
    Réponses: 1
    Dernier message: 14/10/2009, 09h19
  2. écrire dans le registre HKLM sans avoir droits
    Par salihovic dans le forum Windows Forms
    Réponses: 1
    Dernier message: 28/07/2009, 14h20
  3. Réponses: 5
    Dernier message: 03/10/2005, 18h01
  4. Réponses: 1
    Dernier message: 20/09/2005, 21h15
  5. Lire une valeur dans le registre
    Par John.s dans le forum C
    Réponses: 2
    Dernier message: 26/11/2003, 19h55

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