Comment utiliser une version 32 bits de l'objet COM sur Windows Server 2008 (travaux sur 2008 R2, mais non 2008)

Je suis en utilisant la valeur par défaut DllSurrogate pour permettre l'automatisation de 32 bits de l'objet COM en 64 bits. Cela fonctionne parfaitement dans Windows7 64 bits et Windows Server 2008 R2. Cependant, la saveur régulière de Windows Server 2008 (pré R2) ignore complètement le DllSurrogate entrée dans le registre. J'ai fait des recherches pendant des jours et trouvé de la documentation classique de Windows Server 2008 avait registre de réflexion qui ignore la DllSurrogate valeur si son vide. (Je laisse de la valeur de la chaîne de registre vide pour utiliser la valeur par défaut de Substitution.) Pour contourner ce non-réfléchie (pas de copié entre 32 bits et 64 bits des registres), je lance le regedit.exe*32 et configurer les touches. Puis-je ouvrir normale regedit et configurer les touches. Toujours pas de chance. J'ai également essayé le réglage de la DllSurrogate valeur de registre c:\windows\syswow64\dllhost.exe de sorte que la valeur n'est pas vide, mais qui ne fonctionne pas du tout (sur n'importe quel OS). L'erreur que je reçois est "ne peut pas créer d'objet activex."

J'ai reproduit le problème sur 2 de Windows Server 2008 (Pré R2) des machines. J'ai aussi vérifié que l'objet COM peut être utilisé sur les machines lors du lancement d'une version 32 bits de l'application. J'ai utilisé LINQPad 32 bits et 64 bits pour tester. LINQPad l'exécution de 32 bits peut créer l'objet COM. 64bit LINQPad ne peut pas.

[texte du lien][1] <-- la Solution, je suis en utilisant (fonctionne sur R2)
http://msdn.microsoft.com/en-us/library/aa384253(SV.85).aspx <-- Documentation DllSurrogate entrée de registre n'est pas reflété sur Windows Server 2008, mais je ne sais pas comment faire pour contourner cette limitation. J'ai essayé d'utiliser regedit.exe*32 pour modifier le registre 32 bits directement.

Les idées de ce que je suis en manque ici? Est-il une astuce particulière pour utiliser la valeur par défaut DllSurrogate (dllhost.exe) sur la pré-R2? La réécriture de notre COM .NET n'est pas une option pour le moment. J'espère que je suis juste en manque de quelque chose comme cela ne fonctionne sur la dernière version de Windows Server 2008 R2.

Merci de prendre un coup d'oeil!
Danny

Avez-vous essayé d'utiliser 64 bits Regedit et modifier la clé de registre HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Wow6432Node\AppId ?
Oui, mais pas de chance. Il accepte et montre l'AppId (que j'ai mis mon COM est GUID) à la fois 64 bits regedit et 32 bits regedit. Il semble ignorer la valeur. DLLHost.exe n'apparaît jamais dans le gestionnaire des tâches. Merci pour la suggestion.
J'ai trouvé un indice. DllHost.exe ne démarre lorsque je crée l'objet, mais son 64-bit DllHost.exe. De toute façon, pour lui dire d'utiliser la version 32 bits C:\windows\syswow64\?

OriginalL'auteur Danny | 2010-10-28