Gibt es eine gute, gründliche verbindliche Referenz, die die Interoperabilität zwischen 32-Bit- und 64-Bit-Prozessen behandelt? Basierend auf dem Googlen habe ich Folgendes abgeleitet:
Dies deutet darauf hin, dass: 1. Eine 32-Bit-Anwendung kann GetObject nicht verwenden, um eine 64-Bit-Version von Excel zu erhalten, die ausgeführt wird? Oder kann es? Wie wird die ROT (Running Object Table) von einem 32- oder 64-Bit-Problem beeinflusst? Kann ein 32-Bit-Prozess eine Excel-Instanz erstellen, wenn nur eine 64-Bit-Version von Office installiert ist? Ich würde denken, die Antwort wäre "Nein", es sei denn, der 32-Bit-Prozess verwendet das 64-Bit-Flag in seinem CoCreateInstance-Aufruf oder wenn Excel sich auch irgendwie in der 32-Bit-Welt registriert?
Trifft Microsoft automatisch CoCreateInstance von einem 32-Bit-Prozess, überprüft die 64-Bit-Registrierung und versucht eine 64-Bit-Komponente zu erstellen, wenn keine in der 32-Bit-Registrierung registriert ist? Ich habe einige Versionshinweise aus 64-Bit-Office gelesen, in denen Microsoft vor dem Zugriff von 32-Bit-Anwendungen auf 64-Bit-Excel warnt, aber ich weiß von einem Fall, in dem es einfach zu funktionieren scheint.
Gibt es dafür einen guten technischen Sachbezug?
In den MSDN Library-Dokumentationen ist dies sehr gut erklärt CLSCTX. Viele Regeln, das Standardverhalten ist:
Wenn weder der Client noch der Server gibt eine Präferenz an, dann:
Wenn der Computer, auf dem der Server gehostet wird, Windows XP oder Windows Server 2003 ohne Service Pack 1 (SP1) oder später installiert, dann COM wird eine 64-Bit-Version von bevorzugen der Server, falls verfügbar; sonst es aktiviert eine 32-Bit-Version des Server.
Wenn der Computer, der den Server hostet, Windows Server 2003 ausführt mit SP1 oder später installiert, dann COM wird versuchen, den Server zu finden Architektur für den Kunden die Architektur. Mit anderen Worten, für a 32-Bit-Client, COM aktiviert a 32-Bit-Server, falls verfügbar; Andernfalls Es wird eine 64-Bit-Version von aktiviert der Server. Für einen 64-Bit-Client, COM Wird ein 64-Bit-Server aktiviert, wenn verfügbar; Sonst wird es aktiviert ein 32-Bit-Server.
Überprüfen Sie den MSDN-Artikel, wenn Sie dieses Verhalten überschreiben möchten.