Inkompatible Anwendung unter Windows 7 zum Laufen bringen


    Tags: , ,

    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.

    Täglich Know-how für IT-Pros mit unserem Newsletter

    Wir ver­wenden Ihre Mail-Adresse nur für den Ver­sand der News­letter.
    Es erfolgt keine per­sonen­be­zogene Auswertung.

    Bild von Andreas Kroschel

    Andreas Kroschel ist Buchautor und Verfasser von Fachartikeln zu Hardware, Windows und Linux sowie IT-Sicherheit. Er arbeitete als Redakteur unter anderem für BYTE Deutschland und die PC-Welt.

    Verwandte Beiträge

    Weitere Links