- 06/05/2017
- 5 Minuten zum Lesen
-
- j
- s
- k
- m
- b
Da Registrierungseinträge Eigenschaften von Schlüsseln sind und daher nicht direkt durchsucht werden können, müssen wirum einen etwas anderen Ansatz bei der Arbeit mit ihnen zu nehmen.
Registrierungseinträge auflisten
Es gibt viele verschiedene Möglichkeiten, Registrierungseinträge zu untersuchen. Der einfachste Weg besteht darin, die einem Schlüssel zugeordneten Eigenschaftennamen abzurufen. Um beispielsweise die Namen der Einträge im RegistrierungsschlüsselHKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion
anzuzeigen, verwenden Sie Get-Item
. Registrierungsschlüsselhaben eine Eigenschaft mit dem generischen Namen „Property“, bei der es sich um eine Liste der Registrierungseinträge im Schlüssel handelt.Der folgende Befehl wählt die Eigenschaft Property aus und erweitert die Elemente, sodass sie in einer Liste angezeigt werden:
DevicePathMediaPathUnexpandedProgramFilesDirCommonFilesDirProductId
Um die Registrierungseinträge in einer besser lesbaren Form anzuzeigen, verwenden Sie Get-ItemProperty
:
Get-ItemProperty -Path Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion
Den Windows PowerShell-bezogenen Eigenschaften für den Schlüssel wird „PS“ vorangestellt, z. B. asPSPath, PSParentPath, PSChildName und PSProvider.
Sie können die Notation *.*
verwenden, um auf den aktuellen Standort zu verweisen. Sie können Set-Location
verwenden, um zuerst in den CurrentVersion-Registrierungscontainer zu wechseln:
Set-Location -Path Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion
Alternativ können Sie das eingebaute HKLM PSDrive mit Set-Location
verwenden:
Set-Location -Path hklm:\SOFTWARE\Microsoft\Windows\CurrentVersion
Sie können dann die *.*
Notation für den aktuellen Standort verwenden, um die Eigenschaften ohne einen vollständigen Pfad anzugeben:
Get-ItemProperty -Path .
...DevicePath : C:\WINDOWS\infMediaPathUnexpanded : C:\WINDOWS\MediaProgramFilesDir : C:\Program Files...
Die Pfaderweiterung funktioniert genauso wie im Dateisystem, sodass Sie von diesem Speicherort aus die ItemProperty-Auflistung für HKLM:\SOFTWARE\Microsoft\Windows\Help
mitGet-ItemProperty -Path ..\Help
.
Abrufen eines einzelnen Registrierungseintrags
Wenn Sie einen bestimmten Eintrag in einem Registrierungsschlüssel abrufen möchten, können Sie einen von mehreren möglichen Ansätzen verwenden. Dieses Beispiel findet den Wert von DevicePath inHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion
.
Verwenden Sie Get-ItemProperty
, verwenden Sie den Parameter Path, um den Namen des Schlüssels anzugeben, und danName Parameter, um den Namen des DevicePath-Eintrags anzugeben.
Get-ItemProperty -Path HKLM:\Software\Microsoft\Windows\CurrentVersion -Name DevicePath
Dieser Befehl gibt die standardmäßigen Windows PowerShell-Eigenschaften sowie die DevicePathproperty zurück.
Hinweis
Obwohl Get-ItemProperty
über Filter-, Include- und Exclude-Parameter verfügt, können diese nicht zum Filtern nach Eigenschaftsnamen verwendet werden. Diese Parameter beziehen sich auf Registrierungsschlüssel, die itempaths sind, und nicht auf Registrierungseinträge, die Elementeigenschaften sind.
Eine weitere Option ist die Verwendung der Reg.exe-Kommandozeilen-Tool. Hilfe bei reg.exe, geben Sie reg.exe /?
an einer Eingabeaufforderung ein. Um den DevicePath-Eintrag zu finden, verwenden Sie reg.exe wie im folgenden Befehl gezeigt:
reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion /v DevicePath
Sie können auch das WshShell-COM-Objekt verwenden, um einige Registrierungseinträge zu finden, obwohl diese Methode nicht mit großen Binärdaten oder mit Registrierungseintragsnamen funktioniert, die Zeichen wie „\“ enthalten. Hängen Sie den Eigenschaftsnamen mit einem \ Trennzeichen an den Elementpfad an:
(New-Object -ComObject WScript.Shell).RegRead("HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\DevicePath")
%SystemRoot%\inf
Festlegen eines einzelnen Registrierungseintrags
Wenn Sie einen bestimmten Eintrag in einem Registrierungsschlüssel ändern möchten, können Sie einen von mehreren möglichen verwendenansätze. In diesem Beispiel wird der Pfadeintrag unter HKEY_CURRENT_USER\Environment
geändert. DerPath-Eintrag gibt an, wo ausführbare Dateien zu finden sind.
- Rufen Sie den aktuellen Wert des Pfadeintrags mit
Get-ItemProperty
ab. - Fügen Sie den neuen Wert hinzu und trennen Sie ihn mit einem
;
. - Verwenden Sie
Set-ItemProperty
mit dem angegebenen Schlüssel, Eintragsnamen und Wert, um den registryentry zu ändern.
Hinweis
Obwohl Set-ItemProperty
Filter-, Include- und Exclude-Parameter hat, können sie nicht zum Filtern nach Eigenschaftsnamen verwendet werden. Diese Parameter beziehen sich auf Registrierungsschlüssel (itempaths) und nicht auf Registrierungseinträge (item properties).
Eine weitere Option ist die Verwendung der Reg.exe-Kommandozeilen-Tool. Hilfe bei reg.exe, Typ reg.exe /?an einer Eingabeaufforderung.
Das folgende Beispiel ändert den Pfadeintrag, indem der im obigen Beispiel hinzugefügte Pfad entfernt wird.Get-ItemProperty
wird weiterhin verwendet, um den aktuellen Wert abzurufen, um zu vermeiden, dass der stringreturned von reg query
analysiert werden muss. Die Methoden SubString und lastIndexOf werden verwendet, um den zuletzt zum Pfadeintrag hinzugefügten Pfad abzurufen.
The operation completed successfully.
Erstellen neuer Registrierungseinträge
Um dem CurrentVersion-Schlüssel einen neuen Eintrag mit dem Namen „PowerShellPath“ hinzuzufügen, verwenden Sie New-ItemProperty
mit dem Pfad zum Schlüssel, dem Namen des Eintrags und dem Wert des Eintrags. In diesem Beispiel verwenden wir den Wert der Windows PowerShell-Variablen $PSHome
, die den Pfad zum Installationsverzeichnis für Windows PowerShell speichert.
Sie können den neuen Eintrag zum Schlüssel hinzufügen, indem Sie den folgenden Befehl verwenden, und der Befehl gibt auch Informationen über den neuen Eintrag zurück:
Der PropertyType muss der Name einer Eigenschaft sein.Win32.RegistryValueKind Enumeration member aus der folgenden Tabelle:
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 |
Hinweis
Sie können einen Registrierungseintrag an mehreren Speicherorten hinzufügen, indem Sie ein Array von Werten für den folgenden Parameter angeben:
Sie können auch einen bereits vorhandenen Registrierungseintragswert überschreiben, indem Sie den Parameter Force zu einem beliebigenNew-ItemProperty
.
Registrierungseinträge umbenennen
Um den PowerShellPath-Eintrag in „PSHome“ umzubenennen, verwenden Sie Rename-ItemProperty
:
Rename-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion -Name PowerShellPath -NewName PSHome
Fügen Sie dem Befehl den Parameter PassThru hinzu, um den umbenannten Wert anzuzeigen.
Rename-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion -Name PowerShellPath -NewName PSHome -passthru
Registrierungseinträge löschen
Um sowohl die Registrierungseinträge PSHome als auch PowerShellPath zu löschen, verwenden Sie Remove-ItemProperty
: