Hmya, c'est un peu au-delà du "clic". Vous devez écrire une extension shell. Faire cela en C# était tout à fait hors limites jusqu'à .NET 4.0 en raison du problème d'injection de version CLR. Les programmes non gérés (par exemple, Notepad) recevraient le CLR injecté dans eux quand ils utilisent un dialogue de shell, comme FolderBrowser ou OpenFileDialog. Ce qui peut provoquer l'échec du code suivant nécessitant une autre version du CLR. Cela est résolu, CLR 4.0 prend en charge l'opération côte à côte en mémoire de plusieurs versions CLR.
Ce qui n'est pas résolu, c'est la complexité du code que vous devez écrire. Les extensions shell requièrent du code COM. Le genre dur, les interfaces qui dérivent de IUnknown. Pour commencer, vous devez écrire des masses de déclarations pour les interfaces COM. Vous ne pouvez pas les sortir des déclarations SDK, elles ne sont utilisables que par un programme C++. Et il est très sujet aux erreurs, C# ne supporte pas l'héritage multiple, la fonctionnalité dont vous avez besoin pour déclarer les interfaces COM qui sont dérivées d'autres interfaces.
Enfin, le débogage de ce type de code est un cauchemar. C'est un processus Windows essentiel que vous bricolez. Faire une erreur vous laisse avec un shell inutilisable. Le redémarrage démarre le même shell borked.
Eh bien, compétences en ceinture noire requises. J'imaginais que la disponibilité de .NET 4.0 aurait dû déclencher certains projets qui fournissent des wrappers gérés conviviaux. Je n'en ai tout simplement pas encore vu. Prenez cela comme un signe aussi.