Arbeiten mit Registrierungseinträgen

  • 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-Locationverwenden, 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.

  1. Rufen Sie den aktuellen Wert des Pfadeintrags mit Get-ItemProperty ab.
  2. Fügen Sie den neuen Wert hinzu und trennen Sie ihn mit einem ;.
  3. 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-ItemPropertymit 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:

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.