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.
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
Identifie le nom de la variable à définir.
Identifie la valeur de chaîne ou de nombre entier à définir dans la variable.
Tampon contenant la valeur à définir dans la variable.
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 de l'entrée du registre.
Le type d'entrée du registre est renvoyé en notation Microsoft :
Valeur 0
Valeur 1
Valeur 2
Valeur 3
Valeur 4
Valeur 5
Valeur 6
Valeur 7
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)
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)
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.
|
Copyright © 2013 CA.
Tous droits réservés.
|
|