Travailler avec des Entrées de Registre

  • 05/06/2017
  • 5 minutes à lire
    • j
  • s
  • k
  • m
  • b

Étant donné que les entrées de registre sont des propriétés de clés et, en tant que telles, ne peuvent pas être directement consultées, nous devons prendre une valeur légèrement différente approche lorsque vous travaillez avec eux.

Liste des entrées de registre

Il existe de nombreuses façons d’examiner les entrées de registre. Le moyen le plus simple est d’obtenir les propriétésnoms associés à une clé. Par exemple, pour voir les noms des entrées dans la clé de registre HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion, utilisez Get-Item. Clés de registreavoir une propriété avec le nom générique de « Propriété » qui est une liste d’entrées de registre dans la clé.La commande suivante sélectionne la propriété Propriété et développe les éléments de sorte qu’ils soient affichés dans une liste:

DevicePathMediaPathUnexpandedProgramFilesDirCommonFilesDirProductId

Pour afficher les entrées de registre sous une forme plus lisible, utilisez Get-ItemProperty:

Get-ItemProperty -Path Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion

Les propriétés liées à Windows PowerShell pour la clé sont toutes préfixées par « PS », telles que asPSPath, PSParentPath, PSChildName et PSProvider.

Vous pouvez utiliser la notation *.* pour faire référence à l’emplacement actuel. Vous pouvez utiliser Set-Location pour passer d’abord au conteneur de registre CurrentVersion:

Set-Location -Path Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion

Alternativement, vous pouvez utiliser le PSDrive HKLM intégré avec Set-Location:

Set-Location -Path hklm:\SOFTWARE\Microsoft\Windows\CurrentVersion

Vous pouvez ensuite utiliser la notation *.* pour le courant emplacement pour lister les propriétés sans spécifier un chemin complet:

Get-ItemProperty -Path .
...DevicePath : C:\WINDOWS\infMediaPathUnexpanded : C:\WINDOWS\MediaProgramFilesDir : C:\Program Files...

L’expansion du chemin fonctionne de la même manière que dans le système de fichiers, donc à partir de cet emplacement, vous pouvez obtenir la liste des propriétés pour HKLM:\SOFTWARE\Microsoft\Windows\Help en utilisant Get-ItemProperty -Path ..\Help.

Obtenir une seule entrée de registre

Si vous souhaitez récupérer une entrée spécifique dans une clé de registre, vous pouvez utiliser l’une des nombreuses approches possibles. Cet exemple trouve la valeur de DevicePath dans HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion.

En utilisant Get-ItemProperty, utilisez le paramètre Path pour spécifier le nom de la clé, puis le paramètre Nom pour spécifier le nom de l’entrée DevicePath.

Get-ItemProperty -Path HKLM:\Software\Microsoft\Windows\CurrentVersion -Name DevicePath

Cette commande renvoie les propriétés standard de Windows PowerShell ainsi que la propriété DevicePathproperty.

Remarque

Bien que Get-ItemProperty ait des paramètres de filtre, d’inclusion et d’exclusion, ils ne peuvent pas être utilisés pour filtrer par nom de propriété. Ces paramètres se réfèrent aux clés de registre, qui sont des chemins d’éléments et non des entrées de registre, qui sont des propriétés d’éléments.

Une autre option consiste à utiliser le Reg.outil de ligne de commande exe. Pour de l’aide avec reg.exe, tapez reg.exe /? à une invite de commande. Pour trouver l’entrée DevicePath, utilisez reg.exe comme indiqué dans la commande suivante:

reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion /v DevicePath

Vous pouvez également utiliser l’objet COM WshShell pour trouver des entrées de registre, bien que cette méthode ne fonctionne pas avec de grandes données binaires ou avec des noms d’entrées de registre qui incluent des caractères tels que « \ »). Ajoutez le nom de la propriété au chemin de l’élément avec un séparateur \:

(New-Object -ComObject WScript.Shell).RegRead("HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\DevicePath")
%SystemRoot%\inf

Définition d’une seule entrée de registre

Si vous souhaitez modifier une entrée spécifique dans une clé de registre, vous pouvez utiliser l’une des nombreuses approches possibles. Cet exemple modifie l’entrée de chemin sous HKEY_CURRENT_USER\Environment. L’entrée ThePath spécifie où trouver les fichiers exécutables.

  1. Récupère la valeur actuelle de l’entrée de chemin en utilisant Get-ItemProperty.
  2. Ajoutez la nouvelle valeur en la séparant par un ;.
  3. Utilisez Set-ItemProperty avec la clé, le nom d’entrée et la valeur spécifiés pour modifier le registryentry.

Remarque

Bien que Set-ItemProperty ait des paramètres de filtre, d’inclusion et d’exclusion, ils ne peuvent pas être utilisés pour filtrer par nom de propriété. Ces paramètres se réfèrent aux clés de registre — qui sont des chemins d’éléments — et non aux entrées de registre — qui sont des propriétés d’éléments.

Une autre option consiste à utiliser le Reg.outil de ligne de commande exe. Pour de l’aide avec reg.exe, tapez reg.exe /?à une invite de commande.

L’exemple suivant modifie l’entrée de chemin en supprimant le chemin ajouté dans l’exemple ci-dessus.Get-ItemProperty est toujours utilisé pour récupérer la valeur actuelle pour éviter d’avoir à analyser la chaîne retournée à partir de reg query. Les méthodes SubString et LastIndexOf sont utilisées pour récupérer le dernier chemin ajouté à l’entrée Path.

The operation completed successfully.

Création de nouvelles entrées de registre

Pour ajouter une nouvelle entrée nommée « PowerShellPath » à la clé CurrentVersion, utilisez New-ItemProperty avec le chemin d’accès à la clé, le nom de l’entrée et la valeur de l’entrée. Pour cet exemple, nous prendrons la valeur de la variable Windows PowerShell $PSHome, qui stocke le chemin d’accès au répertoire d’installation pour Windows PowerShell.

Vous pouvez ajouter la nouvelle entrée à la clé en utilisant la commande suivante, et la commande renvoie également des informations sur la nouvelle entrée:

Le type de propriété doit être le nom d’un Microsoft.Gagner 32.RegistryValueKind membre de l’énumération à partir du tableau suivant:

PropertyType Value Meaning
Binary Binary data
DWord A number that is a valid UInt32
ExpandString A string that can contain environment variables that are dynamically expanded
MultiString A multiline string
String Any string value
QWord 8 bytes of binary data

Remarque

Vous pouvez ajouter une entrée de registre à plusieurs emplacements en spécifiant un tableau de valeurs pour le paramètre Path:

Vous pouvez également écraser une valeur d’entrée de registre préexistante en ajoutant le paramètre Force à n’importe quel New-ItemProperty.

Renommer les entrées de registre

Pour renommer l’entrée PowerShellPath en « PSHome », utilisez Rename-ItemProperty :

Rename-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion -Name PowerShellPath -NewName PSHome

Pour afficher la valeur renommée, ajoutez le paramètre PassThru à la commande.

Rename-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion -Name PowerShellPath -NewName PSHome -passthru

Suppression des entrées de registre

Pour supprimer les entrées de registre PSHome et PowerShellPath, utilisez Remove-ItemProperty:

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *