Obtention de données de Registre
Vous pouvez obtenir ou modifier des données de Registre à l’aide de la classe WMI StdRegProv et de ses méthodes. Lors de l’utilisation de l’utilitaire Regedit pour afficher et modifier les valeurs de Registre sur l’ordinateur local, StdRegProv vous permet d’utiliser un script ou une application pour automatiser ces activités sur l’ordinateur local et les ordinateurs distants.
StdRegProv contient des méthodes pour effectuer les opérations suivantes :
- Vérifier les autorisations d’accès pour un utilisateur
- Créer, énumérer et supprimer des clés de Registre
- Créer, énumérer et supprimer des sous-clés ou des valeurs nommées
- Lire, écrire et supprimer des valeurs de données
Les données du Registre sont organisées par sous-arborescences, clés et sous-clés imbriquées sous une clé de niveau supérieur. Les valeurs de données réelles sont appelées entrées ou valeurs nommées.
Les sous-arborescences incluent les éléments suivants :
- HKEY_CLASSES_ROOT (abrégé en HKCR)
- HKEY_CURRENT_USER (HKCU)
- HKEY_LOCAL_MACHINE (HKLM)
- HKEY_USERS
- HKEY_CURRENT_CONFIG
Par exemple, dans l’entrée de Registre HKEY\SOFTWARE\Microsoft\DirectX\InstalledVersion, la sous-arborescence HKEY est SOFTWARE ; les sous-clés sont Microsoft et DirectX ; et l’entrée de valeur nommée est InstalledVersion.
Un RegistryKeyChangeEvent se produit lorsqu’une modification d’une clé spécifique se produit, mais l’entrée n’identifie pas comment les valeurs changent et cet événement ne sera pas déclenché par des modifications sous la clé spécifiée. Pour identifier les modifications n’importe où dans une structure de clé hiérarchique, utilisez RegistryTreeChangeEvent, qui ne retourne pas de valeurs spécifiques ni de modifications de clé qui se produisent. Pour obtenir une modification de valeur d’entrée spécifique, utilisez RegistryValueChangeEvent, puis lisez l’entrée pour obtenir une valeur de base.
StdRegProv possède uniquement des méthodes qui peuvent être appelées à partir de C++ ou de script, qui est différente de la structure de classe Win32.
L’exemple de code suivant montre comment utiliser la méthode StdRegProv.EnumKey pour répertorier toutes les sous-clés logicielles Microsoft sous la clé de Registre.
\HKEY_LOCAL_MACHINE SOFTWARE Microsoft\
const HKEY_LOCAL_MACHINE = &H80000002
strComputer = "."
Set objReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv")
strKeyPath = "SOFTWARE\Microsoft"
objReg.EnumKey HKEY_LOCAL_MACHINE, strKeyPath, arrSubKeys
For Each subkey In arrSubKeys
Wscript.Echo subkey
Next
Remarque
VBScript est obsolète. Pour plus d’informations, consultez le billet de blog de dépréciation VBScript : Chronologies et étapes suivantes.
# The signature for EnumKey method of StdRegProv class:
#
# uint32 EnumKey(
# [in] uint32 hDefKey = HKEY_LOCAL_MACHINE,
# [in] string sSubKeyName,
# [out] string sNames[]
# );
$arguments = @{
hDefKey = [uint32]2147483650 # HKEY_LOCAL_MACHINE
sSubKeyName = 'SOFTWARE\Microsoft'
}
$subkeys = Invoke-CimMethod -ClassName StdRegProv -MethodName EnumKey -Arguments $arguments
subkeys.sNames
StdRegProv a différentes méthodes pour lire les différents types de données de valeur d’entrée de Registre. Si l’entrée a des valeurs inconnues, vous pouvez appeler StdRegProv.EnumValues pour les répertorier. Le tableau suivant répertorie la correspondance entre les méthodes StdRegProv et les types de données.
Method | Type de données |
---|---|
GetBinaryValue | REG_BINARY |
GetDWORDValue | REG_DWORD |
GetExpandedStringValue | REG_EXPAND_SZ |
GetMultiStringValue | REG_MULTI_SZ |
GetStringValue | REG_SZ |
Le tableau suivant répertorie les méthodes correspondantes pour créer de nouvelles clés ou valeurs, ou modifier des clés existantes.
Method | Type de données |
---|---|
SetBinaryValue | REG_BINARY |
SetDWORDValue | REG_DWORD |
SetExpandedStringValue | REG_EXPAND_SZ |
SetMultiStringValue | REG_MULTI_SZ |
SetStringValue | REG_SZ |
L’exemple suivant montre comment lire la liste des sources du journal des événements système à partir de la clé de Registre.
\HKEY_LOCAL_MACHINE SYSTEM\Current Control Set\Services\Eventlog System\
Notez que les éléments de la valeur multistring sont traités comme une collection ou un tableau.
const HKEY_LOCAL_MACHINE = &H80000002
strComputer = "."
Set objReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv")
strKeyPath = "SYSTEM\CurrentControlSet\Services\Eventlog\System"
objReg.EnumKey HKEY_LOCAL_MACHINE, strKeyPath, arrSubKeys
For Each subkey In arrSubKeys
Wscript.Echo subkey
Next
Remarque
VBScript est obsolète. Pour plus d’informations, consultez le billet de blog de dépréciation VBScript : Chronologies et étapes suivantes.
# The signature for EnumKey method of StdRegProv class:
#
# uint32 EnumKey(
# [in] uint32 hDefKey = HKEY_LOCAL_MACHINE,
# [in] string sSubKeyName,
# [out] string sNames[]
# );
$arguments = @{
hDefKey = [uint32]2147483650 # HKEY_LOCAL_MACHINE
sSubKeyName = 'SYSTEM\CurrentControlSet\Services\Eventlog\System'
}
$subkeys = Invoke-CimMethod -ClassName StdRegProv -MethodName EnumKey -Arguments $arguments
subkeys.sNames
Le fournisseur de Registre est hébergé dans LocalService, et non dans LocalSystem. Par conséquent, l’obtention d’informations à distance à partir de la sous-arborescence HKEY_CURRENT_USER n’est pas possible. Toutefois, les scripts exécutés sur l’ordinateur local peuvent toujours accéder à HKEY_CURRENT_USER. Vous pouvez définir le modèle d’hébergement sur LocalSystem sur une machine distante, mais c’est un risque de sécurité, car le Registre sur l’ordinateur distant est vulnérable à l’accès hostile. Pour plus d’informations, consultez Hébergement et sécurité du fournisseur.
Rubriques connexes