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 :

SaveKey dans TRegistry


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 18
    Par défaut SaveKey dans TRegistry
    Voilà j'essaie d'utiliser la fonction savekey de la classe TRegistry, j'ai essayer plusieurs configurations sans réussir à sauvegarder la clé que je souhaitais. Le fichier est bien crée mais il n'y a rien dedans et la fonction me retourne false, mais bon ça m'avance pas beaucoups.
    Voici un exemple de ce que j'ai essayer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
       TRegistry * Reg = new TRegistry();
       Reg->RootKey = HKEY_CURRENT_USER;
       if(Reg->SaveKey("Software\\HGH\\","test"))
        Edit1->Text = "OK";
    La clef existe bien j'arrive à lire les différentes valeurs et à les écrire.

  2. #2
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Par défaut
    Salut
    J'ai testé ton prog et chez moi ça ne marche pas non plus. J'ai essayé aussi avec les API Windows RegCreateKeyEx et RegSaveKey, itou ça ne marche pas non plus.
    Si tu es sous Windows 2000 ou XP, il faut que le prog ait le privilège "SE_BACKUP_NAME" pour que la copie puisse s'effectuer. Il faut fouiller la doc Windows pour voir comment lui donner ce privilège.
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  3. #3
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Par défaut
    Salut
    C'est résolu ?
    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
    BOOL SetPrivilege(
        HANDLE hToken,          // access token handle
        LPCTSTR lpszPrivilege,  // name of privilege to enable/disable
        BOOL bEnablePrivilege   // to enable or disable privilege
        )
    {
        char tmp[100];
        TOKEN_PRIVILEGES tp;
        LUID luid;
        if ( !LookupPrivilegeValue(
                NULL,            // lookup privilege on local system
                lpszPrivilege,   // privilege to lookup
                &luid ) )       // receives LUID of privilege
        {
            sprintf(tmp, "LookupPrivilegeValue error: %u\n", GetLastError() );
            Form1->Edit1->Text = tmp;
            return FALSE;
        }
     
        tp.PrivilegeCount = 1;
        tp.Privileges[0].Luid = luid;
        if (bEnablePrivilege)
            tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
        else
            tp.Privileges[0].Attributes = 0;
     
        // Enable the privilege or disable all privileges.
     
        AdjustTokenPrivileges(
               hToken,
               FALSE,
               &tp,
               sizeof(TOKEN_PRIVILEGES),
               (PTOKEN_PRIVILEGES) NULL,
               (PDWORD) NULL);
     
        // Call GetLastError to determine whether the function succeeded.
     
        if (GetLastError() != ERROR_SUCCESS)
        {
          sprintf(tmp, "AdjustTokenPrivileges failed: %u\n", GetLastError() );
          Form1->Edit1->Text = tmp;
          return FALSE;
        }
     
        return TRUE;
    }
     
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
       DeleteFile("test");
       HANDLE TokenHandle;
       if (OpenProcessToken( GetCurrentProcess()  , TOKEN_ADJUST_PRIVILEGES, &TokenHandle) != ERROR_SUCCESS)
       {
            LPVOID lpMsgBuf;
            FormatMessage(   FORMAT_MESSAGE_ALLOCATE_BUFFER |   FORMAT_MESSAGE_FROM_SYSTEM |    FORMAT_MESSAGE_IGNORE_INSERTS,
                        NULL,  GetLastError(),  MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
                        (LPTSTR) &lpMsgBuf, 0, NULL);
            Edit1->Text = (LPCTSTR)lpMsgBuf;
            LocalFree( lpMsgBuf );
       }
       SetPrivilege(TokenHandle, SE_BACKUP_NAME, true);
     
    TRegistry * Reg = new TRegistry();
       Reg->RootKey = HKEY_CURRENT_USER;
        if(Reg->SaveKey("Software\\MyCle\\","test"))
            Edit1->Text = "OK";
        else
            Edit1->Text = "KO";
     
        delete Reg;
     
    }
    Testé avec C Builder 3, j'ai utilisé un code tiré de MSDN
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 18
    Par défaut
    Pb résolu
    Merci beaucoups pour ton aide, Trap D. Elle m'a été très utile.

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

Discussions similaires

  1. Problème avec TRegistry et SaveKey...
    Par subsub dans le forum Composants VCL
    Réponses: 5
    Dernier message: 07/04/2003, 14h52
  2. gérer les jpg dans une fenetre directdraw???
    Par Anonymous dans le forum DirectX
    Réponses: 1
    Dernier message: 14/06/2002, 13h39
  3. enregistrer dans un fichier avec une appli mdi
    Par ferrari dans le forum C++Builder
    Réponses: 4
    Dernier message: 05/05/2002, 15h17
  4. faire un selection dans une image aves les APIs
    Par merahyazid dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/04/2002, 10h44
  5. Documentation DirectX dans C++Builder 3
    Par srvremi dans le forum DirectX
    Réponses: 1
    Dernier message: 26/04/2002, 09h59

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