Rubrique précédente: RegSetValue : Associer la clé de registre à une chaîne de texteRubrique suivante: Fonctions de manipulation de chaîne


RegSetVariable : Stocker une variable dans une clé de registre

Valide pour Windows

La fonction RegSetVariable stocke une variable dans la clé du registre spécifiée.

Cette fonction de manipulation de registre présente le format suivant :

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.
hKey

Identifie une clé ouverte ou une clé prédéfinie. Le paramètre hKey peut avoir l'une des valeurs prédéfinies suivantes :

HKEY_CLASSES_ROOT
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_USERS
nom

Identifie le nom de la variable à définir.

Valeur

Identifie la valeur de chaîne ou de nombre entier à définir dans la variable.

mémoire tampon

Tampon contenant la valeur à définir dans la variable.

bufsize

Taille du tampon en caractères si le tampon est de type chaîne ou tableau de caractères. Dans le cas contraire, elle est exprimée en octets.

type

Type de l'entrée du registre.

Le type d'entrée du registre est renvoyé en notation Microsoft :

REG_NONE

Valeur 0

REG_SZ

Valeur 1

REG_EXPAND_SZ

Valeur 2

REG_BINARY

Valeur 3

REG_DWORD

Valeur 4

REG_DWORD_LITTLE_ENDIAN

Valeur 5

REG_DWORD_BIG_ENDIAN

Valeur 6

REG_LINK

Valeur 7

REG_MULTI_SZ

Valeur 8

En cas de réussite, la fonction renvoie True, sinon elle renvoie False.

Exemple : Fonction RegSetVariable

Avant de débuter l'exemple suivant, exécutez l'exemple RegOpenKey.

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\pour test uniquement")
if hkey1 = 0 then
	Print("Echec de RegOpenKey.")
	quitter
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)

SetMode64 : accès au registre Windows 64 bits et au système de fichiers

Les fonctions DMScript peuvent accéder au registre Windows et lancer des programmes. Lorsque DMScript s'exécute sur un système d'exploitation Windows 64 bits, le système d'exploitation impose certaines règles car DMScript est une application 32 bits. L'accès au registre pour certaines clés est automatiquement redirigé vers une zone de registre 32 bits parallèle. Par exemple, l'accès à HKLM\SOFTWARE\xxx est redirigé vers HKLM\SOFTWARE\Wow6432Node\xxx. Pour obtenir une liste complète des clés redirigées, consultez l'article : us/library/aa384253(v=vs.85).aspx. de http://msdn.microsoft.com/en

De même, l'accès au système de fichiers à l'aide de certaines variables d'environnement qui font référence aux répertoires système, sont automatiquement redirigés vers des répertoires qui contiennent des binaires 32 bits. Par exemple, le répertoire %windir%\System32 est réservé aux applications 64 bits. Si DMScript tente d'accéder à ce répertoire, il est automatiquement redirigé vers %windir%\SysWOW64. Pour plus d'informations, consultez l'article http://msdn.microsoft.com/en-us/library/aa384187(v=vs.85).aspx.

Ce comportement est important pour les scripts de signatures intelligentes parce que les scripts doivent détecter des applications 64 bits en accédant aux clés de registre 64 bits et aux systèmes de fichiers appropriés. Par exemple, si un script de signatures intelligentes essaie de lire la clé de registre pour la version 64 bits de 7zip à l'emplacement HKLM\SOFTWARE\7-zip, le script échoue parce qu'il recherche en fait dans le répertoire HKLM\SOFTWARE\ Wow6432Node\7-zip qui n'existe pas. De même, une tentative de recherche dans la version 64 bits du Bloc-notes dans le répertoire %windir%\System32 trouve la version 32 bits.

Pour gérer ce comportement, DMScript fournit la fonction suivante qui désactive la redirection automatique sur le système d'exploitation Windows 64 bits :

setmode64(mode)
Mode

Spécifie si la redirection doit être désactivée ou activée. Une valeur de 1 désactive la redirection et une valeur de 0 l'active.
Exemple : setmode64(1)

Remarque : Lorsque vous êtes en mode 64 bits, accédez au registre 32 bits à l'aide d'un nom physique comme HKLM\SOFTWARE\Wow6432Node\xxx. Toutefois, Microsoft ne recommande pas cette pratique parce que la méthode de redirection peut changer dans les versions futures de Windows. A la place, le script doit revenir au mode 32 bits.

Important : La désactivation de la redirection du système de fichiers pour de plus longues périodes peut empêcher dmscript de charger les DLL système, entraînant son échec.