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 :

[D6][Windows 10] Supprimer une clé HKLM


Sujet :

Delphi

  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 425
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 425
    Points : 1 326
    Points
    1 326
    Par défaut [D6][Windows 10] Supprimer une clé HKLM
    Bonjour à toutes et à tous.

    Depuis les dernières mises à jour de Windows 10, la base de registre a subit des restrictions.

    En effet pour écrire une clé afin de permettre à une petite horloge de s'afficher au démarage de Windows 10 il a fallut modifier le code et lancer l'application en mode administrateur, ce mode m'ennuie car une fenêtre s'affiche.

    Mais lorsque cette clé est créée, avec une ancienne procédure pour la déletée cela ne fonctionne plus.

    Par contre avec un fichier batch sans être en administrateur cela fonctionne.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    function Tform1.GetDeleteValue(SelectRootKey: HKEY; SelectKey:string; Key: string): Boolean;
    begin
      with TRegistry.Create do
        begin
          try
            RootKey := SelectRootKey;
            OpenKey(SelectKey, False);
            Result := DeleteValue(Key);
          finally
           Free;
          end;
        end;
    end;
    Usage :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     GetDeleteValue(HKEY_LOCAL_MACHINE, 'Software\Microsoft\Windows\CurrentVersion\Run', 'CinClockVocal'); //Ne fonctionne plus
    Pour créer la clé maintenant:

    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
     
    const
     KEY_WOW64_64KEY = $0100;
    var
      Reg: TRegistry;
      Key: string;
    begin
    Reg := TRegistry.Create;
    try
      Reg.Access := KEY_WOW64_64KEY or KEY_WRITE;
     
      Reg.RootKey := HKEY_LOCAL_MACHINE;
      if Reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run', True) then
      begin
        Reg.WriteString('CinClockVocal',Paramstr(0){Application.ExeName});
        Reg.CloseKey;
      end;
    finally
      Reg.Free;
    end;
    end;
    Si quelqu'un a une idée pour effacer, merci d'avance.

    ! je ne veus pas utiliser la clé HKEY_CURRENT_USER;

    @+,

    cincap

  2. #2
    Membre confirmé

    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 371
    Points : 627
    Points
    627
    Billets dans le blog
    1
    Par défaut
    Si ça fonctionne avec un batch dos
    Alors regarde cette page
    https://www.developpez.net/forums/d2...-commande-dos/

  3. #3
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 345
    Points : 3 123
    Points
    3 123
    Par défaut
    Bonjour Cincap,

    tu veux effacer la valeur ou bien ta clef ?

    Est ce que DeleteKey('nom_de_la_clé') ne fonctionne pas ?

    As tu regardé la FAQ ?

    A+
    Charly

    PS : tu es en 32 bits ou en 64 bits ?

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

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 693
    Points : 13 128
    Points
    13 128
    Par défaut
    Tu écris dans la ruche 64 bits mais veux effacer dans la 32. Forcément que ça va pas le faire

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 425
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 425
    Points : 1 326
    Points
    1 326
    Par défaut
    Bonjour à toutes et à tous,

    @ popoy, merci pour le retour, je l'avais fait dans mes tests c'est pour cette raison que j'avais indiqué :

    Par contre avec un fichier batch sans être en administrateur cela fonctionne.
    @ Charly910, merci pour le retour, c'est la clé que je dois mettre ou pas, mais je te rassure dans la clé HKCU cela fonctionne bien.

    @ Andnotor, merci aussi pour le retour, je me doutais bien que c'était la le problème, j'avais testé aussi avec un manifest mais le problème de la petite fenêtre me génait.

    Donc apparemment je dois modifier la procédure delete comme j'ai fait celle pour créer la clé.

    Je vais encore faire des essais ce jour.

    Bonne journée.

    @+,

    cincap

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 425
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 425
    Points : 1 326
    Points
    1 326
    Par défaut
    @ tous, voici ma procédure modifiée qui fonctionne :

    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
     
    procedure RemoveFromRunKey(ApTitle: string);
    const
     KEY_WOW64_64KEY = $0100;
    var
      Reg: TRegistry;
      TheKey: string;
      ListOfEntries: TStringList;
      i: integer;
    begin
      Reg := TRegistry.Create;
      try
      Reg.Access := KEY_WOW64_64KEY or KEY_WRITE;
      Reg.RootKey := HKEY_LOCAL_MACHINE;
      TheKey := 'Software\Microsoft\Windows\CurrentVersion\Run';
     
      if not Reg.OpenKey(TheKey, False) then
        ShowMessage('Key not found')
      else begin
        if Reg.DeleteValue(ApTitle) then
          ShowMessage('Removed: ' + ApTitle)
        else
          ShowMessage('Not found: ' + ApTitle);
      end;
      finally
      Reg.CloseKey;
      Reg.Free;
    end;
    end;
    usage :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    RemoveFromRunKey('CinClockVocal');
    Merci à Andnotor de m'avoir mis sur la voie et merci à tous.

    Le topic peut être fermé.

    @+,

    cincap

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

Discussions similaires

  1. supprimer une BDD oracle 9i sous windows
    Par menoran dans le forum Oracle
    Réponses: 4
    Dernier message: 25/06/2010, 17h22
  2. Réponses: 1
    Dernier message: 24/08/2009, 15h28
  3. supprimer une ligne avec cle etrangere
    Par BaBas dans le forum Langage SQL
    Réponses: 4
    Dernier message: 15/07/2003, 11h24
  4. Supprimer une colonne sous SQL Serveur 2000
    Par WOLO Laurent dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 14/07/2003, 12h24
  5. Supprimer une ligne dans un fichier
    Par sbeu dans le forum Langage
    Réponses: 3
    Dernier message: 13/05/2003, 10h30

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