(C#) Associer extension à un program

a marqué ce sujet comme résolu.

Bonjour,

j'ai recherché pendant plusieurs heure un moyen d'associer une extension à mon logiciel mais sans succès.

J'ai essayer :

1
2
3
4
5
6
public static void SetAssociationWithExtension(string Extension, string AppName, string OpenWith, string RegistryOpenWith, string Path)
        {
            Registry.SetValue("HKEY_CURRENT_USER\\Software\\Classes\\" + Extension, "", AppName, RegistryValueKind.String);
            Registry.SetValue("HKEY_CURRENT_USER\\Software\\Classes\\" + AppName + "\\shell\\" + RegistryOpenWith, "", OpenWith, RegistryValueKind.String);
            Registry.SetValue("HKEY_CURRENT_USER\\Software\\Classes\\" + AppName + "\\shell\\" + RegistryOpenWith + "\\command", "", Path, RegistryValueKind.String);
        }

Mais cela ne marche pas. Avez-vous une solution ?

Ps : Windows 10 avec .Net 4.5.2

+0 -0

Oui, elle fonctionne partiellement.

Seulement le projet est sous BDS (je crois) qui n'est pas compatible avec la license MIT.

Mais pense enfaite que ma solution plus haut est fonctionnelle mais n'avais pas marché sur mon pc car elle est rentré en conflit avec une autre app. Je vais vérifier.

+0 -0

Oui cela marche. Mais j'ai une autre question je vais mettre dans le context menu de windows un shell (une ligne) qui sera afficher seulement si c'est pas égale à une extension défini.

Une idée ?

+0 -0

j'y avais pensez mais on peut pas tous les connaitre et c'est très lourd.

Techniquement, si on peut. Il suffit de parcourir la racine de HKCR et de noter toutes les clés qui commencent par un point, et qui contiennent une valeur par défaut "XXX" qui pointe vers une autre clé HKCR\XXX qui existe. A l'époque de Windows 98 et XP aussi sauf erreur, il me semble qu'il y avait un onglet "Types de fichier" dans la boîte de dialogue "Options des dossiers", qui listait toutes les extensions enregistrées et qui grosso modo devait faire ce genre de recherche. Je n'ai jamais retrouvé cet onglet depuis Windows 7.

Le plus simple pour ton cas à mon avis c'est quand même d'ajouter ton item de menu à * et de faire en sorte que ton programme soit assez intelligent pour ignorer les fichiers qu'il ne reconnaît pas. D'ailleurs si on veut vraiment faire les choses correctement, on devrait arrêter de se baser uniquement sur les extensions pour reconnaître le véritable type d'un fichier, et plutôt se baser sur ses premiers octets (souvent 4 ou parfois 8) qui contiennent en général une signature de son type.

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte