2010-03-29 11 views
-1

J'ai créé une barre d'outils Windows Explorer en C#. Cette barre d'outils est supprimée lors de la désinstallation de mon application, mais elle est toujours affichée après la désinscription (mise en cache dans explorer.exe). explorer.exe a besoin d'un redémarrage dans la barre d'outils pour disparaître. Comment puis-je résoudre ce problème par le code C#?Actualiser l'explorateur Windows dans la barre d'outils de l'ordre à disparaître

+0

Vous n'êtes pas censé écrire des extensions dans .NET – Anders

Répondre

1

Il n'y a vraiment aucun moyen de le faire proprement sans demander à l'utilisateur de se déconnecter. Si vous avez un accès programmatique pour désactiver votre barre d'outils, vous pouvez injecter du code dans chaque processus de l'explorateur qui a chargé votre dll et éteindre la barre d'outils, puis appeler CoFreeUnusedLibraries (Encore un peu hacky mais vous n'aurez pas à tuer les processus

-5
foreach(Process p in Process.GetProcesses()){ 

try{ 

if(p.MainModule.ModuleName.Contains("explorer") == true)p.Kill(); 

} 
catch(Exception e){} 

Process.Start("explorer.exe"); 

} 

Essayez-le.

+0

Ce n'est pas une bonne solution car redémarrer explorer.exe fermera toutes les fenêtres utilisateur. Je veux un rafraîchissement pas un redémarrage. – Cornel

+0

Vous avez spécifiquement dit "explorer.exe a besoin d'un redémarrage pour disparaître", donc je vous ai donné le code pour le redémarrer. Veuillez être plus clair avec votre question avant de pointer la réponse. –

+0

Je pense que vous n'avez pas bien compris le titre de la question. La barre d'outils pour dissapear pas explorer.exe. S'il vous plaît lire plus attentivement la question avant de poster une réponse. – Cornel

0

Je ne suis pas sûr que l'explorateur mettrait en cache la barre d'outils si elle a été correctement déchargée. Je sais peu de choses sur ces choses, mais êtes-vous sûr que vous ne manquez pas un appel de désenregistrement dans votre installateur?