Warum können einige HKLM-Einträge auf 64-Bit-PCs gelesen werden, andere jedoch nicht von VB6

Warum können einige HKLM-Einträge auf 64-Bit-PCs gelesen werden, andere jedoch nicht von VB6

Einer unserer Kunden verwendet unsere Software auf älteren Windows-Versionen, weil er in einer industriellen, abgeschotteten Umgebung arbeitet und Windows XP und eine Reihe alter Server hat, die das Einzige sind, was für ihn funktioniert. Einige davon sind 64-Bit.

Beim Lesen der Registrierung stelle ich fest, dass unsere 32-Bit-App in einigen Fällen den folgenden Eintrag unter einem 64-Bit-Windows tatsächlich direkt lesen kann – was theoretisch nicht möglich sein sollte:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorerund ziehen Sie die Versionsnummer aus dem Zeichenfolgenwert „Version“.

Wenn wir jedoch auf demselben PC einen Schlüssel erstellen HKEY_LOCAL_MACHINE\SOFTWARE\Our Softwareund einen Zeichenfolgenwert wie „Zuletzt gewartet“ hinzufügen, kann dieser nicht gelesen werden.

Berechtigungen und Eigentumsrechte sind dieselben wie beim IE-Eintrag, wenn wir vergeblich versuchen, ihn dort hinzuzufügen.

Das geht \\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Our Software\Last Service Datenatürlich, aber warum, wenn manche Dinge in den „normalen“ Teil der Registrierung passen und lesbar sind, andere nicht? Es wäre einfacher und sauberer, wenn man Daten aus der Anwendung zieht, um das Servicedatum zu lesen, und kritisch, wenn es aus Unachtsamkeit fälschlicherweise zum Standard HKEY_LOCAL_MACHINE hinzugefügt wird.

Übersehe ich etwas?

Antwort1

Sie sind auf die Registrierungsumleitung:

Der Registrierungsumleiter isoliert 32-Bit- und 64-Bit-Anwendungen, indem er separate logische Ansichten bestimmter Teile der Registrierung auf WOW64 bereitstellt. Der Registrierungsumleiter fängt 32-Bit- und 64-Bit-Registrierungsaufrufe an ihre jeweiligen logischen Registrierungsansichten ab und ordnet sie dem entsprechenden physischen Registrierungsspeicherort zu. Der Umleitungsprozess ist für die Anwendung transparent. Daher kann eine 32-Bit-Anwendung auf Registrierungsdaten zugreifen, als ob sie auf 32-Bit-Windows ausgeführt würde, selbst wenn die Daten auf 64-Bit-Windows an einem anderen Speicherort gespeichert sind.

Einige Registrierungsschlüssel von Anwendungen, wie beispielsweise , HKEY_LOCAL_MACHINE\Software werden immer umgeleitet. Die meisten Registrierungsstrukturen werden nicht umgeleitet.

Ein 32/64-Bit-Programm kann dennoch den Zugriff auf die 64/32-Bit-Version der Registrierung erzwingen, indem es spezielle Flags in die Anforderung einfügt, wie im Artikel beschrieben Auf eine alternative Registrierungsansicht zugreifen. Siehe auch Beispiel für eine Registrierungsumleitung auf WOW64.

verwandte Informationen