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++Builder Discussion :

Probleme ecriture dans la base de registre


Sujet :

C++Builder

  1. #1
    Candidat au Club
    Inscrit en
    Avril 2005
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Probleme ecriture dans la base de registre
    Salut à tous !

    Je suis nouveau ici et j'ai bien fait des recherche dans cette mine d'infos qu'est Develippez.com mais je n'aarive toujours pas à ecrire dans le registre

    Voila :

    Je voudrai creer une clé de type REG_DWORD et une REG_BINARY dans le registre et si elles existent déja, elle seront écrasées par les nouvelles.

    Voici les clés à inserer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    [HKEY_CLASSES_ROOT\CLSID\{645FF040-5081-101B-9F08-00AA002F954E}\ShellFolder] 
    "Attributes"=hex:50,01,00,20
    "CallForAttributes"=dword:00000000
    Attributes c'est une DWORD avec valeur en hexa
    et la CallForAttributes c'est la BINARY en binaire

    Quelles sont exactement les opérations à faire dans l'ordre ?

    Le mieux serait carrement le bout de code permettant de le faire

    PS j'ai trouvé des exemples mais j'ai pas reussi à les faire tourner

    Merci d'avance.

  2. #2
    Rédacteur
    Avatar de Greybird
    Inscrit en
    Juin 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 673
    Points : 1 271
    Points
    1 271

  3. #3
    Candidat au Club
    Inscrit en
    Avril 2005
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Oui mais est-ce c'est pareil de creer une clé, ou une valeur DWORD ou BINAIRE ? car dans la FAQ, il n'y a que la creation de Clés, et on ne parle pas des valeurs DWORD ou autres (du moins comment les creer)

    :

  4. #4
    Rédacteur
    Avatar de Greybird
    Inscrit en
    Juin 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 673
    Points : 1 271
    Points
    1 271
    Par défaut
    Si, si, on en parle de la création de valeur.

    cf http://c.developpez.com/faq/bcb/?pag...e#bdrouvrircle

    Sinon, je pense que WriteInteger et WriteBinaryData devraient convenir non ?

  5. #5
    Candidat au Club
    Inscrit en
    Avril 2005
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    A ouai dsl

    J'avais zapé le chapitre "Comment ouvrir une clé et lire/modifier/supprimer une valeur ?"

    Je vais m'y remettre, on vera bien si j'arrive a le faire marcher...

  6. #6
    Candidat au Club
    Inscrit en
    Avril 2005
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Bon pour le DWORD ca marche nikel mais pour le BINARY j'ai un probleme.

    Quand je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    char valeur[4];     // creation d'un tableau de 4 char
     
    valeur[0]=80;       // hexa(50) -> decimal(80) pour avoir le bon caractere
    valeur[1]=01;       // idem pour 01 (meme s'il ne change pas)
    valeur[2]=00;       // idem pour 01 (meme s'il ne change pas)
    valeur[3]=32;       // hexa(20) -> decimal(32)
     
    char* Buffer=&valeur[0];  // pointeur sur char
     
    registre->WriteBinaryData("Attributes",Buffer,4);  // prend les 4 char du tableau pour les mettre dans la valeur de clé
    Avec registre étant un objet TRegistre

    Buffer est ma valeur à entrer (en hexa : 50 01 00 20)

    Mais "Buffer" est un paramètre ayant un format d'un octet (que des char).
    Donc il faudrait que je m'amuse à convertir l'hexa (50 01 00 20) en char.
    J'y aurrai bien injecté directement en char mais le probleme c'est que le "01" et "00" sont des caractères non visibles.

    Je sais pas si j'ai pas compris un truc mais en pratique c'est bien ca qu'il se passe. Ca m'a obligé à faire ce tableau de 4 char...

    Peut-on eviter ca ?

  7. #7
    Rédacteur
    Avatar de Greybird
    Inscrit en
    Juin 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 673
    Points : 1 271
    Points
    1 271
    Par défaut
    Non, je crois que tu n'y couperas pas

  8. #8
    Candidat au Club
    Inscrit en
    Avril 2005
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Bon ok merci pour tes réponses. Mon probleme est résolu.

    Je mets le bout de code, ca peut servir à d'autres pour le BINARY.

    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
     
    TRegistry *registre = new TRegistry();    // Creation d'un objet TRegistry
            try
            {
                    registre->RootKey = HKEY_CLASSES_ROOT;  // Initialisation de la racine
     
                    if(registre->OpenKey("\\CLSID\\{645FF040-5081-101B-9F08-00AA002F954E}\\ShellFolder",true));
                    //si (Ouverture de la clé "..." ,si non existante, on la crée) vrai
                    {
                        registre->WriteInteger("CallForAttributes", 00000000); // On crée un DWORD
     
                        char valeur[4];     // creation d'un tableau de 4 char pour inserer la valeur sous forme de char
     
                        valeur[0]=80;       // hexa(50) -> decimal(80) pour avoir le bon caractere (ASCII)
                        valeur[1]=01;       // idem pour 01 (meme s'il ne change pas) hexa(01) = decimal(01)
                        valeur[2]=00;       // idem pour 01 (meme s'il ne change pas)
                        valeur[3]=32;       // hexa(20) -> decimal(32)
     
                        char* Buffer=&valeur[0];  // pointeur de char pointant le debut du tableau
                        registre->WriteBinaryData("Attributes",Buffer,4); // On crée une BINARY, avec Buffer prennant 4 octets (les 4 char)
                    }
            }
            __finally
            {
                    delete registre;   // Libère la mémoire.
            }
    Pour infos, cette clé sert à activer le "Clic droit" -> "Renommer" pour la corbeille

    @+

  9. #9
    Membre à l'essai
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Novembre 2002
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Algérie

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2002
    Messages : 16
    Points : 22
    Points
    22
    Par défaut
    merci pour ton bout de code concernant la valeur binaire, il me sauve la vie, justement je patinais dessus !!!

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

Discussions similaires

  1. UAC et ecriture dans la base de registre
    Par SoGood dans le forum VB.NET
    Réponses: 8
    Dernier message: 26/02/2015, 11h27
  2. Probleme lecture dans la base de registre
    Par olivier93612 dans le forum VB.NET
    Réponses: 4
    Dernier message: 09/06/2010, 15h35
  3. Réponses: 2
    Dernier message: 02/07/2009, 22h55
  4. Ecriture dans la base de registre
    Par Thierry'' dans le forum VBA Access
    Réponses: 14
    Dernier message: 09/10/2008, 13h20
  5. Probleme d'ecriture dans une base access
    Par mohamed_simo dans le forum ASP
    Réponses: 5
    Dernier message: 05/04/2006, 09h55

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