Salutations, tousPrévenir C# dll d'être chargé pour certaines applications
j'ai une extension de barre d'outils shell écrit en C#. Il est uniquement destiné à être utilisé dans Windows Explorer, je veux donc empêcher le chargement de la DLL dans Internet Explorer. Windows fournit des tonnes de manières de charger des extensions dans IE seulement, mais apparemment aucune manière de faire l'explorateur seulement. Je sais qu'il existe différentes vérifications que je pourrais effectuer à différents endroits après le chargement de la DLL, mais l'idéal serait d'empêcher le chargement de la DLL.
Maintenant, si elle était écrite en C++, j'appellerais GetModuleFileName
en DllMain
, vérifie si l'exécutable était iexplore.exe
, et renvoie false sur attach si c'est le cas. Mais il n'y a pas DllMain
en C#; Microsoft ne nous fait pas confiance pour jouer avec le verrouillage du chargeur. Y at-il un autre moyen que je peux empêcher de manière sélective une DLL C# de se charger?
Non pertinent ... La raison pour laquelle un conseil a été donné était que faire des extensions shell dans .NET pouvait provoquer un problème d'injection CLR pour les programmes non gérés utilisant des boîtes de dialogue shell. Les extensions écrites dans différentes versions de CLR peuvent entrer en conflit les unes avec les autres. Mais ce n'est pertinent que pour des choses comme les gestionnaires de menus contextuels, ou d'autres extensions qui pourraient être utilisées dans les boîtes de dialogue de shell. Les barres d'outils ne sont chargées que par deux applications: Windows Explorer et Internet Explorer. Et pas seulement cela, .NET prend désormais en charge le fonctionnement côte à côte en mémoire de plusieurs versions de CLR, ce qui est complètement obsolète maintenant. –
Je ne me rendais pas compte qu'il était obsolète, Merci – Arjang