2012-12-06 7 views
8

Je voudrais développer une extension shell (gestionnaire de menus contextuels) compatible avec Windows XP SP2 (32 bits) et Windows 7 64 bits.Utilisation d'extensions shell 32 bits dans Windows 7 64 bits

Est-il possible d'exécuter des extensions de shell 32 bits dans Windows 64 bits ou l'extension shell doit-elle être portée/reconstruite sur 64 bits pour être utilisée dans Windows 7 64 bits?

Y a-t-il des inconvénients/problèmes connus dans l'utilisation des extensions shell 32 bits dans les systèmes d'exploitation 64 bits?

Les applications 32 bits s'exécutent très bien sous Windows 64 bits, mais je ne suis pas sûr des extensions shell car, si ma compréhension est correcte, les extensions shell sont in-proc serveurs COM chargés dans le processus Explorer, qui devrait être un processus 64 bits dans Windows 64 bits ... ou est une forme d '"émulation 32 bits" prévue pour les extensions shell 32 bits fonctionnant dans un système d'exploitation 64 bits?

+0

Pas une option. Ajoutez simplement une autre configuration à votre projet qui utilise la cible Win32 en plus de la cible x64. Si votre code est propre, vous n'aurez aucun problème à générer à la fois une version x86 et une version x64 de votre DLL. –

+0

@HansPassant: Cela ressemble à une réponse légitime. –

+0

@HansPassant: Je me demande aussi si les extensions shell 32 bits et 64 bits devraient avoir des GUID _different_. –

Répondre

10

Une extension shell est juste une DLL, et la règle est que les applications 32 bits ne peuvent charger que des DLL 32 bits et que les applications 64 bits ne peuvent charger que des DLL 64 bits. Il n'y a pas moyen de contourner cela.

Une extension de shell 32 bits peut toujours être utile sur un système 64 bits car cela signifie que toutes les applications tierces 32 bits qui chargent des extensions shell fonctionneront. Par exemple, TortoiseSVN est livré avec et installe les versions 32 et 64 bits, et ainsi de suite Windows 64 bits, vous pouvez toujours accéder aux menus contextuels TortoiseSVN à partir d'applications 32 bits (comme un gestionnaire de fichiers tiers).

Mais Explorer lui-même est 64 bits natif sur Windows 64 bits et vous avez donc besoin d'une version 64 bits de votre extension si vous voulez qu'elle fonctionne dans l'Explorateur.

0

Les extensions Shell sont des composants COM. Si vous l'installez en tant que serveur hors processus, Windows (DCOM) doit prendre en charge tous les 32 < -> ordonnancement 64 bits.

Le compilateur MIDL créera alors le tronçon de 64 bits qui sera chargé en cours de traitement.

+2

Cela ne fonctionne pas comme ça ... –

+1

C'est incorrect.Les gestionnaires de menu de contenu sont des extensions en cours de processus et ne peuvent pas être implémentés hors processus. https://msdn.microsoft.com/en-us/library/windows/desktop/dd758089(v=vs.85).aspx. COM distribué (DCOM) ne s'applique pas – MickyD

+0

@Micky votre lien ne prend pas en charge votre demande. Avoir une autre référence? –

0

Vous pouvez utiliser un explorateur 32 bits, comme xplorer² dans Windows 64 bits. Ils peuvent gérer les extensions DLL 32 bits qui peuvent être utilisées pour rechercher du contenu, prévisualiser des données et celles qui s'affichent également dans le menu contextuel. L'explorateur intégré est 64 bits, ce qui ignore les extensions 32 bits.

Questions connexes