Normalerweise ist es recht einfach, die 32-Bit-Version einer Windows-Anwendung über die Befehlszeile auszuführen, z. B. Fenster ausführen:
C:\Windows\SysWOW64\Notepad.exe
Sie können feststellen, dass der Prozess 32-Bit ist, indem Sie Task Monitor \ Prozesse einchecken, da neben dem Dateinamen ein * 32 angezeigt wird.
Der Remotedesktop-Client (mstsc.exe) möchte jedoch keinen Ball spielen. Die 64-Bit-Version wird immer von C: \ Windows \ System32 \ mstsc.exe ausgeführt, unabhängig davon, wie ich sie starte (Fenster ausführen, 32-Bit-Cmd-Fenster usw.). Ich habe sogar versucht, ein 32-Bit-C ++ - Programm zu schreiben, um es zu erstellen (normalerweise sind untergeordnete Prozesse auch 32-Bit), aber das hat nicht funktioniert.
Wir müssen die 32-Bit-Version ausführen, da wir einige benutzerdefinierte DLLs haben, die in den Remotedesktop integriert sind, und es nicht möglich ist, eine 32-Bit-DLL in einem 64-Bit-Prozess zu laden.
Kennt jemand einen Weg, um das zu umgehen?
quelle
Antworten:
Ich habe einen einfachen Weg gefunden, dies zu erreichen.
http://www.davidmoore.info/2009/12/02/running-32-bit-remote-desktop-connection-on-windows-64-bit/
Lösung: Benennen Sie die 64-Bit-Datei mstsc.exe von System32 um, um zu verhindern, dass sie den 32-Bit-Prozess ersetzt.
Dies ist einfach, wenn Sie zum Umbenennen dieser Datei berechtigt sind. Wenn Sie mit NTFS arbeiten, wird möglicherweise der Fehler "Sie benötigen die Berechtigung von TrustedInstaller, um Änderungen an dieser Datei vorzunehmen" angezeigt.
Um diesen Fehler zu beheben, können Sie das Eigentum an der Datei übernehmen und sich die vollständigen Berechtigungen erteilen:
Jetzt können Sie die Datei mstsc.exe in mstsc.exe.bak umbenennen
Anschließend können Sie mstsc.exe über% SystemRoot% \ SysWOW64 starten und eine 32-Bit-Remotedesktopverbindung ausführen.
quelle
Ich habe festgestellt, dass die einzige Möglichkeit, die Ausführung von mstsc mit 32 Bit zu erzwingen, darin besteht, die Abhängigkeiten (von sysinternals) auszuführen und dann mstsc.exe von syswow64 zu öffnen. Nach dem Ausführen mit der Startprofilierung lassen Sie die Option als Standard. Dies führt dazu, dass ein mstsc * 32-Bit ausgeführt wird. Im Moment habe ich keinen anderen Weg dazu gefunden. Hack diese Hilfe Flavio
quelle
Dies ist verwirrend bei den 64-Bit-Versionen von Windows, aber im SysWOW64-Verzeichnis befinden sich die ausführbaren 32-Bit-Dateien, die in 'WOW' (Windows unter Windows) ausgeführt werden. Die im System32-Verzeichnis befindlichen Elemente sind 64-Bit-Binärdateien und haben keine 32-Bit-Entsprechungen. Die Benennung hier ist aus Kompatibilitätsgründen und lahm, aber ich bin sicher, dass einige Software aufgrund dessen funktioniert, die sonst nicht funktionieren würde.
Sie könnten versuchen, die mstsc.exe von einer 32-Bit-Installation auf Ihren 64-Bit-Computer zu kopieren und auszuführen, aber meines Wissens verfügt 64-Bit-Windows nur über eine 64-Bit-Exe für mstsc und kann daher nicht gezwungen werden, im 32-Bit-Modus ausgeführt zu werden.
quelle
Verwenden Sie das folgende Skript als .bat-Datei, um den Start von mstsc.exe x32 zu erzwingen.
quelle
Haben Sie versucht, die ausführbare 32-Bit-Datei aus einer vorhandenen 32-Bit-Installation zu kopieren und auszuführen?
quelle
Haben Sie den Kompatibilitätsmodus und ein älteres Betriebssystem ausprobiert? Ich denke, das System betrachtet das Manifest für die ausführbare Datei und wenn es für Vista entwickelt wurde, wird diese Registerkarte nicht angezeigt. Aber ich denke, Sie könnten das Manifest bearbeiten.
quelle
Meine Antwort lautet: Gibt es eine 32-Bit-Version von mstsc.exe? Ich gehe davon aus, dass mstsc, das mit 64-Bit-Windows geliefert wird, die 64-Bit-Version von mstsc ist.
Die eigentliche Antwort lautet: Wenn Sie eine DLL-Erweiterung für eine 64-Bit-Anwendung schreiben möchten, müssen Sie Ihre DLLs als 64-Bit neu kompilieren. Microsoft ist und sollte nicht verpflichtet sein, eine 32-Bit-Version jeder Betriebssystemkomponente zu liefern.
Ein weiteres Beispiel: Wenn Sie eine Shell-Erweiterung für den 64-Bit-Windows-Explorer schreiben möchten, muss es sich um eine 64-Bit-DLL handeln. Es gibt keine 32-Bit-Version von Windows Explorer. Sie unterstützen entweder 64-Bit-Windows oder nicht.
quelle