Intégration dans le menu contextuel de Windows Explorer
Je veux écrire un petit outil, qui effectue les opérations suivantes:
Lorsque vous cliquez droit sur un fichier avec une certaine extension de fichier de l'Explorateur Windows menu contextuel affiche une entrée supplémentaire.
Lorsque vous cliquez sur cette entrée à un certain EXE est lancé avec ce fichier en tant que l'un de ses paramètres.
Je voudrais utiliser C#/.NET 2.0 pour cela. Si il n'est pas possible je pourrais aussi le faire avec C++/Win32.
Mes questions sont:
- Est-il possible avec C# .NET 2.0?
- Quelles sont les fonctions nécessaires pour l'intégration dans le menu contextuel de Windows Explorer?
- Comment puis-je faire de ce permanent? (Je ne veux pas relancer cet outil après chaque démarrage)
- Que dois-je prendre soin de? (les différents OS, les autorisations de sécurité, etc.)
Vous devez vous connecter pour publier un commentaire.
Vous aurez besoin pour accéder à la base de registre et ajouter une clé sous
root\\File\\shell
ouroot\Folder\\shell
, selon les éléments que vous souhaitez l'élément de menu visible sur.Essayer cet article sur CodeProject, il est tout à fait utile.
Edit: Il y a un autre article ici qui peut être de l'aide.
Il est, par ailleurs, pas pris en charge à utiliser .NET pour les extensions de shell, en raison de l'impossibilité actuelle d'héberger plusieurs versions du moteur d'exécution dans le même processus (.NET 4 va lever cette restriction).
Considérons le cas où vous avez deux extensions du shell, une pour .NET 3.5, un pour .NET 1. Qui d'exécution seront chargées dans votre processus? Eh bien, c'est plus ou moins aléatoire--ça dépend du shell extension est chargé en premier. Il peut parfois être le runtime 2.0, il peut parfois être le 1.1 de l'exécution.
C'est aussi une question de si un .NET programme permet de créer des boîtes de dialogue fichier courantes; votre shell extension peut ou peut ne pas se charger, et peut ou peut ne pas fonctionner avec la bonne version du moteur d'exécution.
En tant que tel, si vous allez en bas de la Shell extension itinéraire vous devez utiliser le code C++/COM/Win32.