- 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.
- pobiera bieżącą wartość wpisu ścieżki za pomocą
Get-ItemProperty
. - Dodaj nową wartość, oddzielając ją
;
. - użyj
Set-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-ItemProperty
ze ś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
: