2010-06-29 6 views
2

J'ai créé une DLL de menu contextuel (DLL COM C++) pour afficher iconoverlays (en utilisant l'interface IShellIconOverlayIdentifier). Pour montrer les iconoverlays initialement, j'ai redémarré l'explorateur. Si le système redémarre, pour afficher les superpositions d'icônes, je dois enregistrer manuellement la DLL et redémarrer l'explorateur à nouveau.Enregistrement et désenregistrement des DLL

Y at-il un moyen d'enregistrer ma commande avant le démarrage de l'explorateur. ??

De plus, si je désinstalle mon application, la DLL ne peut pas être supprimée. Pour supprimer la DLL, j'ai besoin d'arrêter l'explorateur et d'autres applications (par exemple, thunderbird, visual studio) qui utilisent ma DLL, puis désinscrire la DLL. Alors seulement je suis capable de supprimer le Dll. Est-ce correct .. Ou toute autre chose que je peux faire.

Merci à l'avance.

Répondre

3

Je me demande pourquoi vous devez enregistrer votre DLL à chaque redémarrage de votre système. En revanche, il est tout à fait normal que vous deviez redémarrer explorer.exe et les programmes associés pour que les modifications, en particulier celles effectuées par les extensions shell, prennent effet. En outre, le beahivour que vous rencontrez lors de la suppression est la procédure standard que vous devez suivre lorsque vous voulez supprimer votre DLL d'extension shell.

+0

C'est, parce qu'un programme tient automatiquement la poignée de son fichier sous Windows. – Andreas

0

Vous pouvez utiliser des DLL auto-enregistrées. Ils incluent les informations requises pour se stocker dans le registre du système d'exploitation et se stockent automatiquement sur votre machine et deviennent accessibles en cas de besoin.

Une explication détaillée peut être trouvée ici: Self-Registration (COM)

Questions connexes