J'espérais que quelqu'un ici avait un aperçu de ce qui pourrait être à l'origine de ce problème. J'ai implémenté plusieurs extensions COM pour Explorer qui fournissent ShellIconOverlays et un ContextMenu, et les superpositions fonctionnent parfaitement. Le menu contextuel fonctionne bien quand je clique sur le bureau mais quand je clique avec le bouton droit dans une instance d'explorateur, je peux voir l'interface interrogée dans le débogueur et une instance de IShellExtInit générée mais la fonction initialize n'est pas appelée dans l'explorateur instances, mais il est appelé bien à partir du bureau et un élément ContextMenu est interrogé immédiatement après.Windows Shell Extension ne pas initialiser
Quelqu'un a déjà vu quelque chose comme ça avant?
Pouvez-vous élaborer sur la partie «niveau d'intégrité» de votre réponse? Je suis confronté à exactement ce même problème, https://www.youtube.com/watch?v=NEq1S2y6Y14, version build etc. Je reçois les appels createAggregate() et queryInterface() à l'instance de IShellExtInit, mais Initialize n'est jamais appelé. Il est * appelé * lorsqu'il est exécuté à partir du bureau, des boîtes de dialogue à fenêtre ouverte, etc. – qdot
De nombreux auteurs publient de nombreux articles MSDN et blogues. Les niveaux d'intégrité sont élevés, moyens et faibles. Les applications exécutées à différents niveaux d'intégrité sont isolées les unes des autres, même dans le même bureau. Habituellement, le processus explorer.exe fonctionne à intégrité moyenne. Si quelqu'un exécute Visual Studio en tant qu'administrateur et débogue un processus, il peut s'agir d'une intégrité élevée. Dans certains cas, explorer.exe peut être exécuté avec une intégrité élevée, de sorte que le problème peut être le contraire, si une application fonctionne à intégrité moyenne. –
Merci. Il s'est avéré être sans rapport - j'ai toujours supposé que le concept d'intégrité a été introduit autour de Vista, et j'ai rencontré ces bugs dans XP. – qdot