praca z wpisami rejestru

  • 06/05/2017
  • 5 minut na przeczytanie
    • j
    • s
    • K
    • m
    • b

ponieważ wpisy rejestru są właściwościami kluczy i jako takie nie mogą być bezpośrednio przeglądane, musimy nieco inne podejście podczas pracy z nimi.

lista wpisów rejestru

istnieje wiele różnych sposobów sprawdzania wpisów rejestru. Najprostszym sposobem jest uzyskanie nazw właściwości powiązanych z kluczem. Na przykład, aby zobaczyć nazwy wpisów w kluczu rejestru HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion, użyj Get-Item. Klucz rejestracjiwyślij właściwość o ogólnej nazwie „właściwość”, która jest listą wpisów rejestru w kluczu.Poniższe polecenie wybiera właściwość właściwości i rozszerza elementy tak, aby były wyświetlane na liście:

DevicePathMediaPathUnexpandedProgramFilesDirCommonFilesDirProductId

aby wyświetlić wpisy rejestru w bardziej czytelnej formie, użyj Get-ItemProperty:

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

właściwości związane z Windows PowerShell dla klucza są poprzedzone „PS”, takie jak asPSPath, PSParentPath, pschildname i psprovider.

możesz użyć notacji*.*, aby odnieść się do bieżącej lokalizacji. Możesz użyć Set-Location, aby najpierw zmienić kontener rejestru CurrentVersion:

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

Alternatywnie możesz użyć wbudowanego dysku PSDRIVE HKLM z Set-Location:

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

Możesz następnie użyć *.* notacja aby w bieżącej lokalizacji wyświetlić listę właściwości bez określenia pełnej ścieżki:

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

Rozszerzenie ścieżki działa tak samo, jak w systemie plików, więc z tej lokalizacji można uzyskać listę ItemProperty dla HKLM:\SOFTWARE\Microsoft\Windows\Help za pomocąGet-ItemProperty -Path ..\Help.

uzyskanie pojedynczego wpisu rejestru

Jeśli chcesz pobrać konkretny wpis w kluczu rejestru, możesz użyć jednego z kilku możliwych błędów. Ten przykład znajduje wartość DevicePath w HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion.

używającGet-ItemProperty, użyj parametru Path, aby określić nazwę klucza, a parametr name, aby określić nazwę wpisu DevicePath.

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

To polecenie zwraca standardowe właściwości Windows PowerShell oraz devicepathproperty.

Uwaga

chociażGet-ItemProperty ma parametry filtrowania, dołączania i wykluczania, nie mogą być używane do filtrowania według nazwy właściwości. Parametry te odnoszą się do kluczy rejestru, które są ścieżkami itempaths, a nie wpisami rejestru, które są właściwościami elementu.

inną opcją jest użycie Reg.narzędzie wiersza poleceń exe. O pomoc z reg.exe, wpisz reg.exe /? w wierszu polecenia. Aby znaleźć wpis DevicePath, użyj reg.exe jak pokazano w poniższym poleceniu:

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

Możesz również użyć obiektu WshShell COM, aby znaleźć niektóre wpisy rejestru, chociaż tenmethod nie działa z dużymi danymi binarnymi lub nazwami wpisów rejestru, które zawierają znaki takie jak „\”). Dołącz nazwę właściwości do ścieżki elementu za pomocą separatora:

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

ustawienie pojedynczego wpisu rejestru

Jeśli chcesz zmienić określony wpis w kluczu rejestru, możesz użyć jednego z kilku możliwych kroków. Ten przykład modyfikuje wpis ścieżki pod HKEY_CURRENT_USER\Environment. Wpis Path określa, gdzie znajdują się Pliki Wykonywalne.

  1. pobiera bieżącą wartość wpisu ścieżki za pomocąGet-ItemProperty.
  2. Dodaj nową wartość, oddzielając ją ;.
  3. użyjSet-ItemProperty z podanym kluczem, nazwą wpisu i wartością, aby zmodyfikować rejestr.

Uwaga

chociażSet-ItemProperty ma parametry filtrowania, dołączania i wykluczania, nie można ich używać do filtrowania według nazwy właściwości. Parametry te odnoszą się do kluczy rejestru—które są ścieżkami itempaths—a nie wpisów rejestru—które są właściwościami pozycji.

inną opcją jest użycie Reg.narzędzie wiersza poleceń exe. O pomoc z reg.exe, Typ reg.exe /?w wierszu polecenia.

poniższy przykład zmienia wpis ścieżki, usuwając ścieżkę dodaną w powyższym przykładzie.Get-ItemProperty jest nadal używany do pobierania bieżącej wartości, aby uniknąć konieczności analizowania stringreturned zreg query. Metody SubString i lastindexof służą do pobrania ostatniej ścieżki dodanej do wpisu Path.

The operation completed successfully.

tworzenie nowych wpisów rejestru

aby dodać nowy wpis o nazwie „PowerShellPath” do bieżącego klucza konwersji, użyjNew-ItemPropertyze ścieżką do klucza, nazwą wpisu i wartością wpisu. W tym przykładzie przyjmiemy wartość zmiennej Windows PowerShell $PSHome, która przechowuje ścieżkę do katalogu instalacji Dla Windows PowerShell.

możesz dodać nowy wpis do klucza za pomocą następującego polecenia, a polecenie zwraca również informacje o nowym wpisie:

PropertyType musi być nazwą firmy Microsoft.Win32RegistryValueKind enumeration memberfrom the following table:

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

Uwaga

możesz dodać wpis rejestru do wielu lokalizacji, określając tablicę wartości dla parametru thePath:

Możesz również nadpisać istniejącą wartość wpisu rejestru, dodając parametr Force do dowolnegoNew-ItemProperty polecenie.

zmiana nazwy wpisów rejestru

aby zmienić nazwę wpisu PowerShellPath na „PSHome”, użyjRename-ItemProperty:

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

aby wyświetlić zmienioną wartość, Dodaj parametr PassThru do polecenia.

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

usuwanie wpisów rejestru

aby usunąć zarówno wpisy rejestru PSHome, jak i PowerShellPath, użyjRemove-ItemProperty:

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *