Inkompatible Anwendung unter Windows 7 zum Laufen bringen

Microsoft Time Zone crashingAuf seinem Blog „Semantic Consonance“ demonstriert Chris Jackson anhand des Microsoft-Tools „Time Zone“ exemplarisch, wie eine inkompatible Anwendung unter Windows 7 doch noch zum Laufen gebracht werden kann. Das .NET-1.1-Programm gibt unter Windows 7 lediglich die Fehlermeldung „Object reference not set to an instance of an object“ aus und bricht ab.

Fehlerursache geänderte Registry-Struktur

Mit Hilfe eines Debuggers ermittelt Jackson, dass das Programm versucht, ausgehend vom Registry-Schlüssel HKLM\Software\­Microsoft\Windows NT\­CurrentVersion\Time Zones den Wert Index aus jedem Unterschlüssel zu lesen. Diesen Wert gibt es unter Vista, Server 2008 und Windows 7 nicht mehr, wie die Microsoft Knowledgebase verrät. Time Zone kann damit nicht umgehen und stürzt ab.

Lösung durch Registry-Virtualisierung

Zunächst exportiert man HKLM\Software\Microsoft\Windows NT\­CurrentVersion\Time Zones aus einer vorhandenen XP- oder Server-2003-Installation. Per Suchen und Ersetzen im Texteditor ändert man nun alle Schlüsselnamen so um, dass sie auf den VirtualStore zeigen, also alle HKEY_LOCAL_MACHINE in HKEY_CURRENT_USER\Software\Classes\VirtualStore\MACHINE. Nach dem Import des Registry-Auszugs unter Windows 7 befindet sich die Struktur dann also unter

HKCU\Software\Classes\VirtualStore\MACHINE\Software\Microsoft\­Windows NT\CurrentVersion\Time Zones.

Microsoft Time Zone runningMittels des Compatibility Administrator aus den Microsoft Application Compatibility Toolkit 5.5 versieht man danach TimeZone.exe mit dem Compatibility Fix VirtualRegistry. Wichtig ist, den Fix mit dem Parameter

ADDREDIRECT(HKLM\SOFTWARE\Microsoft\Windows%20NT\CurrentVersion\Time%20Zones^HKCU\­SOFTWARE\Classes\VirtualStore­\MACHINE\Software\Microsoft\­Windows%20NT\CurrentVersion\Time%20Zones)

zu verwenden. Anderenfalls würden die Registry-Zugriffe nicht umgeleitet, da der Zweig HKLM\Software\Microsoft\Windows NT davon normalerweise ausgenommen ist.

Anmerkung: Da man den Speicherort des virtualisierten Registry-Zweiges hier manuell vorgibt, müsste sich dieser nicht zwangsläufig im VirtualStore befinden, sondern könnte überall sein. Es dient aber der Übersichtlichkeit, ihn ohne Grund nicht zu verändern.

Keine Kommentare

Kommentar hinzufügen

Der Inhalt dieses Feldes wird nicht öffentlich zugänglich angezeigt. Wenn mit der von Ihren angegebenen Mail-Adresse ein Gravatar verknüpft ist, dann wird dieser neben Ihrem Kommentar eingeblendet.
  • Internet- und E-Mail-Adressen werden automatisch umgewandelt.
  • Zulässige HTML-Tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Zeilen und Absätze werden automatisch erzeugt.
  • Mail-Adressen werden im Seitenquelltext unkenntlich gemacht, um sie vor dem automatischen Erfassen durch Spammer zu schützen.

Weitere Informationen über Formatierungsoptionen