Création d'une extension personnalisée
Résolu
ToxicHayabusa
Messages postés
886
Date d'inscription
Statut
Membre
Dernière intervention
-
Utilisateur anonyme -
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)
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:
- Création d'une extension personnalisée
- Changer extension fichier - Guide
- Sonnerie personnalisée android - Guide
- Extension .bin - Guide
- Creation compte gmail - Guide
- Extension dat - Guide
2 réponses
Bonjour,
Voir ceci pour créer son extension:
https://www.developpez.net/forums/d473477/dotnet/langages/vb-net/creer-propre-extension/
et cela pour écrire dans le registre en vbs
http://www.octetmalin.net/windows/scripts/vbscript-lecture-ecriture-cle-registre.php
Voir ceci pour créer son extension:
https://www.developpez.net/forums/d473477/dotnet/langages/vb-net/creer-propre-extension/
et cela pour écrire dans le registre en vbs
http://www.octetmalin.net/windows/scripts/vbscript-lecture-ecriture-cle-registre.php
On n'ecrit pas dans Nom de la valeur mais dans Données de la valeur:


Merci je le sais très bien...Visiblement vous n'avez pas vraiment comprit le code :/ J'aurais dû vous le montrer en entier
(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.
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.
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é:
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
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
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.
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
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
ç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 ?