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

Langage Delphi Discussion :

Progreme de lecture des clés LegalNoticeCaption et LegalNoticeText


Sujet :

Langage Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    34
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 34
    Par défaut Progreme de lecture des clés LegalNoticeCaption et LegalNoticeText
    Bonjour à tous,

    Cette clé étant un string, j'arrive bien à la lire mais pas à la modifier, j'obtiens toujours uen erreur d'ECHEC à L'OBTENTION DES DOONEES' pour ces 2 cles.

    Voici mon code :

    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
    
    procedure GetMsgOpenWindows(var WTitre : string; var WMessage : string);
    
    var
      Reg : TRegistry;
    
    begin
      Screen.Cursor := crHourglass;
      Reg := TRegistry.Create;
      with TRegistry(Reg) do
      begin
        Try
          ROOTKEY := HKEY_LOCAL_MACHINE;
          if OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System', false)
          then begin
                 WTitre   := PChar(ReadString('LegalNoticeCaption'));
                 WMessage := PChar(ReadString('LegalNoticeText'));           
                end
        Finally
          CloseKey;
          Free;
          Screen.Cursor := crDefault;
        end;
       end;
    end;
    Pour lire c'est OK mais pour enregistrer voici mon code :

    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
    
    procedure SetMsgOpenWindows(WTitre : string; WMessage : string);
    {Pour enregistrer un message d'accueil au démarrage de Windows. Pour valider un nouveau message,
     renseigner les 2 champs, sinon les vider pour envler tout message}
    
    var
      Reg : TRegistry;
    
    begin
      Screen.Cursor := crHourglass;
      Reg := TRegistry.Create;
      with TRegistry(Reg) do
      begin
        Try
          ROOTKEY := HKEY_LOCAL_MACHINE;
          if OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System', true)
          then begin
                 WriteString('LegalNoticeCaption', WTitre);            
                  WriteString('LegalNoticeText', WMessage);     
                 end
        Finally
          CloseKey;
          Free;
          Screen.Cursor := crDefault;
        end;
       end;
    end;
    Impossible, j'obtient l'erreur mêm si je met un PCharWTitre);

    Je ne comprend pas pourquoi, si je peux le lire pourquoi ne pas l'enregistrer ? Avez-vous une diée.

    Cordialemement

  2. #2
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 142
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 142
    Par défaut
    Yop !

    Problème de droits sur la clé ? À voir avec Regedt32.exe

  3. #3
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 937
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 937
    Par défaut
    Et sous Vista et +, élévation de privilèges, sinon lecture seule...

  4. #4
    Membre Expert Avatar de guillemouze
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    876
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 876
    Par défaut
    ou peut etre comme ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Reg := TRegistry.Create(KEY_WRITE);

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    34
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 34
    Par défaut
    Bonjour Guillemouze !

    Oui, j'ai essayé avec ta proposition avec le code suivant que j'ai trouvé sur internet :

    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
    
    procedure SetRegistryData(RootKey : HKEY; Key, value : string ; RegDataType : TRegDataType; Data : variant);
    {Pour simplifier l'écriture d'une valeur de données pour le Registre, vous pouvez
     utiliser cette procédure suivante qui peut écrire n'importe quel type de données
     dans le Registre.  La procédure effectue le traitement des exceptions}
    
     {Exemple d'utilisation  :
      SetRegistryData (HKEY_LOCAL_MACHINE,
                      '\Software\Microsoft\Windows\CurrentVersion\',
                       'RegisteredOrganization',
                       rdString,
                       'Latium Logiciel');}
    
    var
      Reg : TRegistry;
      S   : string;
    
    begin
      Reg := TRegistry.Create(KEY_WRITE);
      Try
        Reg.RootKey := RootKey;
        if Reg.OpenKey(Key, true)
        then begin
               Try
                 if RegDataType = rdUnknown
                 then RegDataType := Reg.GetDataType(Value);
                 if RegDataType = rdString
                 then Reg.WriteString(Value, Data)
                 else if RegDataType = rdExpandString
                      then Reg.WriteExpandString(Value, Data)
                      else if RegDataType = rdInteger
                           then Reg.WriteInteger(Value, Data)
                           else if RegDataType = rdBinary
                           then begin
                                  S := Data;
                                  Reg.WriteBinaryData(Value, PChar(s)^, Length(S));
                                end
                           else raise Exception.Create(SysErrorMessage(ERROR_CANTWRITE));
                                except Reg.CloseKey;
                           raise;
                           end;
                      Reg.CloseKey;
                      end else raise Exception.Create(SysErrorMessage(GetLastError));
      Finally
        Reg.Free;
      end;
    end;
    Mai j'ai toujours une erreur d'obtention de type données ! T aurait il pas une coréllation entre vouloire écrire dans la base de registre et les droits d'administration Pourtant, avec d'autres programmes Delphi, je peux le faire , Si vous acez une idée

    Merci d'avance

Discussions similaires

  1. [Windows]lecture des fichier lnk (raccourcis)
    Par Tiaps dans le forum API standards et tierces
    Réponses: 10
    Dernier message: 21/10/2009, 19h27
  2. Réponses: 4
    Dernier message: 15/01/2007, 21h51
  3. [FLASH MX2004] Lecture des parametres de l'url
    Par matN59 dans le forum Flash
    Réponses: 5
    Dernier message: 23/06/2006, 13h30
  4. [JList] Lecture des données sauvegardées dans un fichier
    Par Myogtha dans le forum Composants
    Réponses: 7
    Dernier message: 10/06/2004, 21h05
  5. Réponses: 4
    Dernier message: 23/07/2003, 13h07

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