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

Delphi Discussion :

Delphi XE11 Registry


Sujet :

Delphi

  1. #1
    Membre émérite
    Avatar de ALWEBER
    Homme Profil pro
    Expert Delphi
    Inscrit en
    Mars 2006
    Messages
    1 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Expert Delphi

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 496
    Points : 2 762
    Points
    2 762
    Billets dans le blog
    10
    Par défaut Delphi XE11 Registry
    Bonjour, j'ai un petit pb dans le code suivant pour sauvegarder une branche. Le fichier créé est vide ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
      Reg := TRegistry.Create;
      with Reg do
      begin
        Reg.RootKey := HKEY_CURRENT_USER;
     
        stKeyName := '\Software\Embarcadero\BDS\17.0\';
        if Reg.OpenKeyReadOnly(stKeyName) then
        begin
          ErrorCode := RegSaveKey(Reg.CurrentKey, 'R17x.reg',nil);
          Reg.CloseKey;
          Reg.Free;
        end;
      end;

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    BDS est dans la section 32Bits surement puisque l'IDE est 32bits, donc faut pas compiler ton projet en 64Bits ou alors forcer le flag WOW64
    Quoi que Current User n'est pas trop concerné par l'architecture

    RegSaveKey c'est basé sur TRegistry.SaveKey ?
    Tu dois être KEY_ALL_ACCESS, le ReadOnly est-il un problème ?

    RegSaveKey si c'est un code maison, pour avoir écrit ça en 1999, j'ai souvenir de différence entre 98 et NT4, j'espère que ta fonctionne n'est pas obsolète.

    Enfin si RegSaveKey c'est RegSaveKeyW de Windows, tu as pris le privilège SE_BACKUP_NAME avec AdjustTokenPrivileges ?

    Inspiré d'un code en D7 de 2007, voir si maintenant la RTL contient des classes assistantes pour cela
    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
     
    var
      TokenHandle, ReturnLength: Cardinal;
      NewState, PreviousState: TTokenPrivileges;
      lpLuid: TLargeInteger;
     
     
          if OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, TokenHandle) then
          begin
            try
              if LookupPrivilegeValue(nil, 'SeBackupPrivilege', lpLuid) then
              begin
                NewState.PrivilegeCount := 1;
                NewState.Privileges[0].Luid := lpLuid;
                NewState.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
                if AdjustTokenPrivileges(TokenHandle, False, NewState, SizeOf(NewState), PreviousState, ReturnLength) then
                begin
                    RegSaveKeyW(...)
                end;
              end;
            finally
              CloseHandle(TokenHandle);
            end;
          end;
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre émérite
    Avatar de ALWEBER
    Homme Profil pro
    Expert Delphi
    Inscrit en
    Mars 2006
    Messages
    1 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Expert Delphi

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 496
    Points : 2 762
    Points
    2 762
    Billets dans le blog
    10
    Par défaut
    Finalement j'ai traité le problème via des commandes de type 'Reg export/import' depuis une commande DOS lancée depuis Delphi à partir de C:\ProgramData.
    Pour info je travaille pour un client avec deux configs différentes de l'IDE Delphi XE10 Seattle sur un même poste avec des composants différents. Merci ShailLe Troll

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

Discussions similaires

  1. Différences entre Delphi et Visual Basic ?
    Par Anonymous dans le forum Débats sur le développement - Le Best Of
    Réponses: 75
    Dernier message: 30/03/2009, 20h09
  2. Réponses: 1
    Dernier message: 13/05/2002, 09h19
  3. [Kylix] Migration delphi -> kylix
    Par Christian dans le forum EDI
    Réponses: 1
    Dernier message: 03/04/2002, 22h50
  4. Réponses: 4
    Dernier message: 27/03/2002, 11h03
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

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