Création d'une extension personnalisée

Résolu/Fermé
ToxicHayabusa Messages postés 882 Date d'inscription dimanche 7 décembre 2014 Statut Membre Dernière intervention 2 septembre 2018 - 11 avril 2018 à 17:48
Whismeril Messages postés 19025 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 19 avril 2024 - 13 avril 2018 à 18:40
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)
A voir également:

2 réponses

cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
11 avril 2018 à 19:50
1
ToxicHayabusa Messages postés 882 Date d'inscription dimanche 7 décembre 2014 Statut Membre Dernière intervention 2 septembre 2018 108
11 avril 2018 à 20:00
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
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
11 avril 2018 à 20:50
On n'ecrit pas dans Nom de la valeur mais dans Données de la valeur:


0
ToxicHayabusa Messages postés 882 Date d'inscription dimanche 7 décembre 2014 Statut Membre Dernière intervention 2 septembre 2018 108
Modifié le 11 avril 2018 à 23:19
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
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
12 avril 2018 à 07:56
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
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
12 avril 2018 à 14:31
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
ToxicHayabusa Messages postés 882 Date d'inscription dimanche 7 décembre 2014 Statut Membre Dernière intervention 2 septembre 2018 108
12 avril 2018 à 17:50
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
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
Modifié le 12 avril 2018 à 18:05
Pour écrire dans la valeur (Par défaut), j'ai répondu en VB.Net ici:

https://forums.commentcamarche.net/forum/affich-35309911-creation-d-une-extension-personnalisee#5

je pense qu'il doit être facile de le traduire en C#

Sinon poser la question ici:

https://codes-sources.commentcamarche.net/forum/c-net-113

Voilà je ne peux pas faire plus

Bon courage

@+ Le Pivert
0