Création d'une extension personnalisée

Résolu
ToxicHayabusa Messages postés 1029 Statut Membre -  
 Utilisateur anonyme -
Bonjour,

Aujourd'hui je viens à vous face à un problème plutôt complexe puisque je ne suis pas habitué au vbs...
En effet, je cherche à créer une clé de registre pour une extension personnalisée et y ajouter un icône par défaut, hors ayant regarder un peu dans regedit pour voir comment ça se présentait, je me rend compte qu'ils ont presque tous une méthode différente, que ce soit entre les extensions personnalisées ou les extensions par défaut du système..
Du coup si quelqu'un pouvait m'éclairer sur un quelconque code pour pouvoir faire ça ce serait sympa et ça m'avancerait beaucoup !

Merci d'avance.

Ps: (oui je veux en code vbs, pour de multiples raisons mais aussi parce qu'il faut que la clé puisse se créer rapidement chez un utilisateur du programme)

--
Les serres du faucon te rattraperont, elles empoisonnerons ton coeur et noircirons ton âme puis te conduiront vers ton repos éternel, te délivrant de ta folie qu'est "l'espoir"

2 réponses

  1. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    1
    1. ToxicHayabusa Messages postés 1029 Statut Membre 111
       
      Merci pour la réponse ! J'ai fini par le faire en c# finalement car plus simple pour moi, en revanche je n'arrive pas à écrire dans la valeur "(Par défaut)", en effet lorsque je laisse
      subkey.SetValue("\\", @"Lecteur:\icone.ico");

      ça me crée juste une valeur se nommant "(Default)" mais n'écrit pas dans la valeur par défaut, hors Microsoft et d'autres sites anglais précisent que normalement il suffit de laisser le nom de valeur vide..Y a-t-il un moyen d'écrire dans la valeur par défaut peut importe la langue ?
      0
  2. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    On n'ecrit pas dans Nom de la valeur mais dans Données de la valeur:


    0
    1. ToxicHayabusa Messages postés 1029 Statut Membre 111
       
      Merci je le sais très bien...Visiblement vous n'avez pas vraiment comprit le code :/ J'aurais dû vous le montrer en entier

              
      Microsoft.Win32.RegistryKey key;
      Microsoft.Win32.RegistryKey subkey;
      private void button1_Click(object sender, EventArgs e)
      {
      key = Microsoft.Win32.Registry.ClassesRoot.CreateSubKey(".pwned");
      subkey = Microsoft.Win32.Registry.ClassesRoot.CreateSubKey(".pwned\\DefaultIcon\\");
      subkey.SetValue("", @"Lecteur:\icone.ico");
      }

      (ce n'est ici qu'une partie du code entier visiblement, mais c'est la partie qui nous intéresse..)

      Evidemment "Lecteur:\icone.ico" est seulement ici en exemple. Le code se trouve dans le bouton 1, qui, lorsque l'on clique, crée la clé de registre. Ici la clé de registre sert donc à créer deux clés, une clé principale pour les fichiers .pwned et la sous clé, "DefaultIcon" pour définir l'icône par défaut. Ici, afin que "DefaultIcon" fonctionne, il faut que le chemin vers l'icône soit intégré donc dans la valeur "(Par défaut)" (en français) de la clé. Hors, Microsoft explique que pour pouvoir le faire, il suffit normalement de laisser le champ pour le nom de la valeur créée vide (subkey.SetValue(" ", @"Lecteur:\icone.ico");) et le système écrira directement dedans, hors lorsque j'ai essayé le système crée juste une nouvelle valeur appelée "(Default)" au lieu d'écrire dans la valeur "(par défaut)"..Je ne vois donc pas comment faire.

      En attendant j'ai donc décidé de créer la clé et la sous clé en C# puis de réécrire dans la valeur (par défaut) en vbs.
      0
    2. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
       
      il y a quelques années j'ai fait un programme en VB.Net

      https://codes-sources.commentcamarche.net/source/54637-explorateur-de-registre

      Dans ce programme tu trouveras le code de création de clé:

        'ajouter  une valeur
              If txtvalue.Text = "" Then
                  MessageBox.Show("Entrée non valide", "Ajouter valeur", MessageBoxButtons.OK, MessageBoxIcon.Error)
                  Exit Sub
              Else
                  Try
                      MiseEnForme(txtchemin.Text) 'recuperer clé principale et chemin
                      principalekey(cleprincipale) 'recuperer clé principale pour registre 
                      Registre = Registre.OpenSubKey(chemincle, True) 'ouverture
                      Select Case C_Type_Val.SelectedIndex 'en fonction du type
                          Case 0 'Binary
                              Registre.SetValue(txtChamp.Text, txtvalue.Text, RegistryValueKind.Binary) 'ajoute la valeur dans le rep specifié
                          Case 1 'Dword
                              Registre.SetValue(txtChamp.Text, txtvalue.Text, RegistryValueKind.DWord) 'ajoute la valeur dans le rep specifié
                          Case 2 'ExpandString
                              Registre.SetValue(txtChamp.Text, txtvalue.Text, RegistryValueKind.ExpandString) 'ajoute la valeur dans le rep specifié
                          Case 3 'String
                              Registre.SetValue(txtChamp.Text, txtvalue.Text, RegistryValueKind.String) 'ajoute la valeur dans le rep specifié
                      End Select
                      Registre.Close() 'Fermeture du registre
                      MessageBox.Show("Valeur créée dans la clé: " & txtnom.Text & Environment.NewLine & "Nom de la valeur: " & txtChamp.Text & Environment.NewLine & "Données: " & txtvalue.Text, "Ajouter valeur", MessageBoxButtons.OK, MessageBoxIcon.Information) 'affiche le message de reussite
                  Catch ex As Exception
                      MessageBox.Show(ex.Message, "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error)
                  End Try
              End If


      Je crois que pour toi c'est une valeur : .Binary

      txtChamp.Text = Nom de la valeur
      ,txtvalue.Text= Données de la valeur

      Voilà pour confirmer regarde dans le registre les clés d'un logiciel connu
      0
    3. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
       
      Voir ce site pour créer une sous clé avec le chemin de l'icône:

      https://openclassrooms.com/fr/courses/1317051-manipulation-dextensions-avec-la-base-de-registre/1317318-completer-les-cles

      @+ Le Pivert
      0
    4. ToxicHayabusa Messages postés 1029 Statut Membre 111
       
      Merci, cependant encore une fois je sais tout cela, ce qui m'aurait surtout intéressé c'est de savoir pourquoi mon code c# n'écrit pas dans la valeur (Par défaut) et crée à la place une nouvelle valeur (Default). Puisque comme je l'ai dis, j'ai choisis de finalement faire ce code en C# car tout le reste de mon application est en C# :) En revanche je comprendrais que vous ne connaissiez pas le C#, je mettrais dans ce cas le sujet en résolut, puisque j'ai bien trouvé comment créer cette clé, et que ma question est plutôt une question secondaire.
      0