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

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    34
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 34
    Points : 22
    Points
    22
    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 éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 719
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 719
    Points : 15 105
    Points
    15 105
    Par défaut
    Yop !

    Problème de droits sur la clé ? À voir avec Regedt32.exe
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

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

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

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

    Informations forums :
    Inscription : Novembre 2004
    Messages : 876
    Points : 1 448
    Points
    1 448
    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 à l'essai
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    34
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 34
    Points : 22
    Points
    22
    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