Wie funktioniert der "Kompatibilitätsmodus" in Windows?

Wie funktioniert der Kompatibilitätsmodus in Windows intern?

comp-Modus

Author: ulrichb, 2010-04-22

4 answers

Der Kompatibilitätsmodus wird mit sogenannten Shims erreicht. Es ist eine gute Artikel auf TechNet beschreibt, wie diese funktionieren.

Windows-Anwendungsdateien enthalten eine Importtabelle, die dem Anwendungslader mitteilt, welche DLLs die Anwendung benötigt und welche Funktionen sie von ihnen verwendet. Ein Prozess kann beispielsweise auf GetVersionEx im kernel32.dll verweisen. Wenn ein Programm im Kompatibilitätsmodus ausgeführt werden soll, wird das Shim zwischen die Anwendung gestellt und das Shim ersetzt die Funktion GetVersionEx , damit ruft die Anwendung GetVersionEx nicht von kernel32.dll auf, sondern von GetVersionEx im Shim. Die schimmernden Funktionen implementieren dann das Verhalten früherer Windows-Versionen. GetVersionEx ist ein einfaches Beispiel, jede Windows-Version gibt ihre eigenen Versionsnummern in GetVersionEx zurück, so dass beim Fälschen eines alten Windows die Funktion GetVersionEx jetzt nicht die Windows 7-Versionsnummern zurückgibt, sondern zum Beispiel die Windows XP-Versionsnummern. Die Anwendung wird also glauben, dass sie unter Windows XP ausgeführt wird.

Es gibt auch einige andere - änderungen von Windows-version zu Windows-version. In älteren Versionen zum Beispiel, wenn ein Programm eine DLL geladen hat, enthielt der Suchpfad für die DLL auch das aktuelle Verzeichnis. Dies ist ein Sicherheitsproblem, sodass neuere Windows-Versionen standardmäßig nicht im aktuellen Verzeichnis suchen. Mit dem richtigen Shim können Sie das alte Verhalten simulieren.

Da Shims nur eine Ebene zwischen der Anwendung und der Windows-API sind, kann ein Shim einfach das tun, was die Anwendung selbst tun kann. Das shim kann nicht sein wird beispielsweise verwendet, um UAC zu umgehen oder auf geschützte Dateien zuzugreifen.

Wenn Sie mehr wissen möchten, hier sind einige links, die Sie interessant finden könnten:

Insbesondere Microsoft-Anwendung Kompatibilität Toolkit ist einen Blick wert. Dieses Tool gibt Ihnen einen Überblick über die Anwendungen mit bekannten Problemen, alle verfügbaren Kompatibilitätskorrekturen und Modi und welche Korrekturen auf jede Anwendung angewendet werden.

 36
Author: Werner Henze,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2015-08-05 14:25:01

Ich denke, viele verschiedene Dinge passieren. Ein einfaches Beispiel ist, dass ein Programm möglicherweise Ihre Windows-Version überprüft, jedoch durch den Rückgabewert eines neuen Betriebssystems verwirrt wird. Die Verwendung des Kompatibilitätsmodus würde Windows also anweisen, eine falsche Version zu melden. Raymond Chen erwähnt noch einige Dinge: http://blogs.msdn.com/oldnewthing/archive/2003/12/23/45481.aspx#45590

 6
Author: akid,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2010-04-22 19:58:59

Mein Wissen über den Kompatibilitätsmodus ist, dass mehrere Windows-Systemaufrufe liegen zum Programm.

Ein offensichtliches Beispiel sind die Funktionen GetVersionEx und GetVersion , die berichten die angegebene Windows-Version anstelle der echten.

Alte Dateipfade werden auch automatisch übersetzt, wenn sich ein Programm im Kompatibilitätsmodus befindet bezieht sich auf eine Datei in bekannten Systemordnern. Zum Beispiel wird C:\Documents and Settings in {[1 übersetzt]} bei der Ausführung unter Windows 7 a Programm im XP-Kompatibilitätsmodus.

 4
Author: harrymc,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2013-10-21 06:13:11

Dieser Artikel macht einen guten Job, es zu erklären.

Http://arstechnica.com/information-technology/2010/01/windows-xp-mode/

Mit Windows 7 hat Redmond jedoch eine Lösung für das Problem bereitgestellt: Windows XP-Modus. Der Windows XP-Modus verwendet die Virtualisierungstechnologie, damit Anwendungen, die auf einer virtualisierten Kopie von Windows XP ausgeführt werden, im Windows 7-Startmenü und auf dem Windows 7-Desktop angezeigt werden.

 -5
Author: whoacowboy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2012-12-31 17:05:42