Gültig für Windows
Die Funktion "RegSetVariable" speichert eine Variable im angegebenen Registrierungsschlüssel.
Diese Registrierungs-Bearbeitungsfunktion hat das folgende Format:
RegSetVariable(hKey as Integer, name as String, value as Integer) as Boolean
RegSetVariable(hKey as Integer, name as String, value as String) as Boolean
RegSetVariable(hkey as integer, name as string, buffer as void, bufsize as integer) as integer.
RegSetVariable(hkey as integer, name as string, buffer as void, bufsize as integer, type as integer) as integer.
Gibt einen zurzeit offenen oder einen vordefinierten Schlüssel an. Der Parameter "hKey" kann einen der folgenden vordefinierten Werte aufweisen:
HKEY_CLASSES_ROOT
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_USERS
Gibt den Namen der festzulegenden Variablen an.
Gibt den Zeichenfolgen- oder Ganzzahlwert an, der in der Variablen festgelegt werden soll.
Der Puffer, der den in der Variablen festzulegenden Wert enthält.
Größe des Puffers in Zeichen, wenn der Puffer den Typ "String" oder den Array-Typ "char" aufweist, andernfalls wird die Anzahl an Byte angegeben.
Der Typ des Registrierungseintrags.
Der Typ des Registrierungseintrags wird in Microsoft-Notation zurückgegeben:
Wert 0
Wert 1
Wert 2
Wert 3
Wert 4
Wert 5
Wert 6
Wert 7
Wert 8
Bei erfolgreichem Abschluss gibt die Funktion TRUE zurück, andernfalls FALSE.
Beispiel: Funktion "RegSetVariable"
Führen Sie vor dem Starten des folgenden Beispiels zunächst das Beispiel für die Funktion "RegOpenKey" aus.
Dim value as string
Dim hkey1 as integer
Dim name, str, dummy as string
Dim i, i1, rtr, int as integer
Dim bBuf[100] as Byte
Dim cBuf[100] as char
ClrScr()
hkey1 = RegOpenKey(HKEY_LOCAL_MACHINE, "SOFTWARE\CA\4 test only")
if hkey1 = 0 then
Print("RegOpenKey failed.")
exit
endif
rtr = RegQueryVariable(hkey1, "var_2", str, int)
Print(Str(rtr) + ": var_2 = " + str)
int = 100
str = ""
rtr = RegQueryVariable(hkey1, "var_2", dummy, int, str)
Print(Str(rtr) + ": var_2(" + Str(int) + ") = " + str)
int = 100
str = ""
rtr = RegQueryVariable(hkey1, "var_2", dummy, int, cBuf)
for i1 = 0 to int - 1
str = str + cBuf[i1]
next i1
Print(Str(rtr) + ": var_2(" + Str(int) + ") = " + str)
int = 100
str = "| "
rtr = RegQueryVariable(hkey1, "var_2", dummy, int, bBuf)
for i1 = 0 to int - 1
str = str + Str(bBuf[i1]) + " | "
next i1
Print(Str(rtr) + ": var_2(" + Str(int) + ") = " + str)
RegCloseKey(hkey1)
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)
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.
|
Copyright © 2013 CA.
Alle Rechte vorbehalten.
|
|