Vorheriges Thema: RegSetVariable - Speichern einer Variablen in einem RegistrierungsschlüsselNächstes Thema: Funktionen zum Bearbeiten von Zeichenfolgen


SetMode64 – Zugreifen auf die Windows 64-Bit-Registrierung und auf das Dateisystem

DMScript-Funktionen können auf die Windows-Registrierung zugreifen und Programme starten. Wenn DMScript auf einem 64-Bit Windows-Betriebssystem ausgeführt wird, erlegt das BS gewisse Regeln auf, da DMScript eine 32-Bit-Anwendung ist. Registrierungszugriff für bestimmte Schlüssel wird automatisch an einen parallelen 32-Bit-Registrierungsbereich umgeleitet. Zum Beispiel wird der Zugriff auf HKLM\SOFTWARE\xxx an HKLM\SOFTWARE\Wow6432Node\xxx umgeleitet. Eine vollständige Liste von umgeleiteten Schlüsseln finden Sie unter: http://msdn.microsoft.com/en-us/library/aa384253(v=vs.85).aspx.

Ähnlicher wird der Zugriff auf das Dateisystem mithilfe bestimmter Umgebungsvariablen, die auf Systemverzeichnisse verweisen, automatisch an Verzeichnisse umgeleitet, die 32-Bit-Binärdateien enthalten. Zum Beispiel ist das Verzeichnis %windir%\System32 für 64-Bit-Anwendungen reserviert. Wenn DMScript versucht, auf dieses Verzeichnis zuzugreifen, wird es automatisch an %windir%\SysWOW64 umgeleitet. Weitere Informationen finden Sie unter http://msdn.microsoft.com/en-us/library/aa384187(v=vs.85).aspx.

Dieses Verhalten ist wichtig für Intellisig-Skripte, weil die Skripte 64-Bit-Anwendungen erkennen müssen, indem sie auf die richtigen 64-Bit-Registrierungsschlüssel und Dateisysteme zugreifen. Wenn zum Beispiel ein Intellisig versucht, den Registrierungsschlüssel für die 64-Bit-Version von 7zip in HKLM\SOFTWARE\7-zip zu lesen, schlägt das Skript fehl, weil es eigentlich in HKLM\SOFTWARE\ Wow6432Node\7-zip sucht, was nicht vorhanden ist. Auf ähnliche Weise wird beim Versuch, die 64-Bit-Version von Notepad in %windir%\System32 zu suchen, die 32-Bit-Version gefunden.

Aufgrund dieses Verhaltens stellt DMScript die folgende Funktion bereit, die die automatische Umleitung auf dem 64-Bit Windows-Betriebssystem deaktiviert:

setmode64(mode)
Modus

Gibt an, ob die Umleitung aktiviert oder deaktiviert werden soll. Ein Wert von 1 deaktiviert die Umleitung, der Wert 0 aktiviert sie.
Beispiel: setmode64(1)

Hinweis: Greifen Sie im 64-Bit-Modus auf die 32-Bit Registrierung mithilfe des physischen Namens wie z. B. HKLM\SOFTWARE\Wow6432Node\xxx zu. Allerdings empfiehlt Microsoft diese Praktik nicht, weil sich die Methode der Umleitung in den künftigen Windows-Versionen ändern kann. Stattdessen muss das Skript zum 32-Bit-Modus zurückkehren.

Wichtig! Für längere Zeiträume die Dateisystemumleitung zu deaktivieren kann verhindern, dass dmscript System-DLLs lädt, was zum Fehlschlagen führt.