Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Ten przykład dotyczy tylko platform systemu Windows.
Ponieważ wpisy rejestru są właściwościami kluczy, a w związku z tym nie można ich przeglądać bezpośrednio, musimy wykonać nieco inne podejście podczas pracy z nimi.
Wyświetlanie listy wpisów rejestru
Istnieje wiele różnych sposobów badania wpisów rejestru. Najprostszym sposobem jest pobranie nazw właściwości skojarzonych z kluczem. Aby na przykład wyświetlić nazwy wpisów w kluczu HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersionrejestru , użyj polecenia Get-Item. Klucze rejestru mają właściwość o ogólnej nazwie "Właściwość", która jest listą wpisów rejestru w kluczu. Następujące polecenie wybiera właściwość Property i rozwija elementy, aby były wyświetlane na liście:
Get-Item -Path Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion |
Select-Object -ExpandProperty Property
DevicePath
MediaPathUnexpanded
ProgramFilesDir
CommonFilesDir
ProductId
Aby wyświetlić wpisy rejestru w bardziej czytelnym formularzu, użyj polecenia Get-ItemProperty:
Get-ItemProperty -Path Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion
ProgramFilesDir : C:\Program Files
CommonFilesDir : C:\Program Files\Common Files
ProgramFilesDir (x86) : C:\Program Files (x86)
CommonFilesDir (x86) : C:\Program Files (x86)\Common Files
CommonW6432Dir : C:\Program Files\Common Files
DevicePath : C:\WINDOWS\inf
MediaPathUnexpanded : C:\WINDOWS\Media
ProgramFilesPath : C:\Program Files
ProgramW6432Dir : C:\Program Files
SM_ConfigureProgramsName : Set Program Access and Defaults
SM_GamesName : Games
PSPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWA
RE\Microsoft\Windows\CurrentVersion
PSParentPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWA
RE\Microsoft\Windows
PSChildName : CurrentVersion
PSDrive : HKLM
PSProvider : Microsoft.PowerShell.Core\Registry
Właściwości związane z programem Windows PowerShell dla klucza są poprzedzone ciągiem "PS", takimi jak PSPath, PSParentPath, PSChildName i PSProvider.
Możesz użyć *.* notacji do odwoływania się do bieżącej lokalizacji. Aby najpierw zmienić kontener rejestru CurrentVersion, możesz użyć Set-Location polecenia :
Set-Location -Path Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion
Alternatywnie możesz użyć wbudowanej HKLM: usługi PSDrive z usługą Set-Location:
Set-Location -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion
Następnie możesz użyć . notacji dla bieżącej lokalizacji, aby wyświetlić listę właściwości bez określania pełnej ścieżki:
Get-ItemProperty -Path .
...
DevicePath : C:\WINDOWS\inf
MediaPathUnexpanded : C:\WINDOWS\Media
ProgramFilesDir : 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 na HKLM:\SOFTWARE\Microsoft\Windows\Help potrzeby używania polecenia Get-ItemProperty -Path ..\Help.
Pobieranie pojedynczego wpisu rejestru
Jeśli chcesz pobrać określony wpis w kluczu rejestru, możesz użyć jednego z kilku możliwych metod. W tym przykładzie znajduje wartość parametru DevicePath w pliku HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion.
Za pomocą Get-ItemPropertypolecenia użyj parametru Ścieżka , aby określić nazwę klucza i parametr Name , aby określić nazwę wpisu DevicePath .
Get-ItemProperty -Path HKLM:\Software\Microsoft\Windows\CurrentVersion -Name DevicePath
DevicePath : C:\WINDOWS\inf
PSPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion
PSParentPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\Software\Microsoft\Windows
PSChildName : CurrentVersion
PSDrive : HKLM
PSProvider : Microsoft.PowerShell.Core\Registry
To polecenie zwraca standardowe właściwości programu Windows PowerShell, a także właściwość DevicePath .
Uwaga
Mimo że Get-ItemProperty ma parametry Filter, Include i Exclude , nie mogą być używane do filtrowania według nazwy właściwości. Te parametry odnoszą się do kluczy rejestru, które są ścieżkami elementów, a nie wpisami rejestru, które są właściwościami elementu.
Inną opcją reg.exe jest użycie narzędzia wiersza polecenia. Aby uzyskać pomoc dotyczącą reg.exepolecenia , wpisz reg.exe /? polecenie w wierszu polecenia. Aby znaleźć wpis DevicePath , użyj polecenia reg.exe , jak pokazano w poniższym poleceniu:
reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion /v DevicePath
! REG.EXE VERSION 3.0
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion
DevicePath REG_EXPAND_SZ %SystemRoot%\inf
Można również użyć obiektu COM programu WshShell , aby znaleźć niektóre wpisy rejestru, chociaż ta metoda nie działa z dużymi danymi binarnymi lub z nazwami wpisów rejestru, które zawierają znaki, takie jak ukośnik odwrotny (\). Dołącz nazwę właściwości do ścieżki elementu z separatorem \ :
(New-Object -ComObject WScript.Shell).RegRead("HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\DevicePath")
%SystemRoot%\inf
Ustawianie pojedynczego wpisu rejestru
Jeśli chcesz zmienić określony wpis w kluczu rejestru, możesz użyć jednego z kilku możliwych metod. W tym przykładzie zmodyfikowano wpis Ścieżka w obszarze HKEY_CURRENT_USER\Environment. Wpis Ścieżka określa, gdzie można znaleźć pliki wykonywalne.
- Pobierz bieżącą wartość wpisu Ścieżka przy użyciu polecenia
Get-ItemProperty. - Dodaj nową wartość, oddzielając ją elementem
;. - Użyj
Set-ItemPropertypolecenia z określonym kluczem, nazwą wpisu i wartością, aby zmodyfikować wpis rejestru.
$value = Get-ItemProperty -Path HKCU:\Environment -Name Path
$newpath = $value.Path += ";C:\src\bin\"
Set-ItemProperty -Path HKCU:\Environment -Name Path -Value $newpath
Uwaga
Mimo że Set-ItemProperty ma parametry Filter, Include i Exclude , nie mogą być używane do filtrowania według nazwy właściwości. Te parametry odnoszą się do kluczy rejestru — które są ścieżkami elementów , a nie wpisami rejestru — które są właściwościami elementu.
Inną opcją jest użycie narzędzia wiersza polecenia Reg.exe. Aby uzyskać pomoc dotyczącą reg.exe, wpisz reg.exe /? w wierszu polecenia.
Poniższy przykład zmienia wpis Ścieżka , 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 ciągu zwróconego z reg query. Metody SubString i LastIndexOf są używane do pobierania ostatniej ścieżki dodanej do wpisu Ścieżka .
$value = Get-ItemProperty -Path HKCU:\Environment -Name Path
$newpath = $value.Path.SubString(0, $value.Path.LastIndexOf(';'))
reg add HKCU\Environment /v Path /d $newpath /f
The operation completed successfully.
Tworzenie nowych wpisów rejestru
Aby dodać nowy wpis o nazwie "PowerShellPath" do klucza CurrentVersion , użyj z New-ItemProperty ścieżką do klucza, nazwą wpisu i wartością wpisu. W tym przykładzie użyjemy wartości zmiennej $PSHomeprogramu Windows PowerShell, która przechowuje ścieżkę do katalogu instalacyjnego programu Windows PowerShell.
Nowy wpis można dodać do klucza przy użyciu następującego polecenia, a polecenie zwraca również informacje o nowym wpisie:
$newItemPropertySplat = @{
Path = 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion'
Name = 'PowerShellPath'
PropertyType = 'String'
Value = $PSHome
}
New-ItemProperty @newItemPropertySplat
PSPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion
PSParentPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows
PSChildName : CurrentVersion
PSDrive : HKLM
PSProvider : Microsoft.PowerShell.Core\Registry
PowerShellPath : C:\Program Files\Windows PowerShell\v1.0
Właściwość PropertyType musi być nazwą elementu członkowskiego wyliczenia Microsoft.Win32.RegistryValueKind z poniższej tabeli:
String— służy do REG_SZ wartości.[System.String]Przekaż obiekt do parametru Value.ExpandString— służy do REG_EXPAND_SZ wartości.[System.String]Przekaż obiekt do parametru Value. Ciąg powinien zawierać niezrozpaczone odwołania do zmiennych środowiskowych, które są rozwinięte po pobraniu wartości.Binary— służy do REG_BINARY wartości.[System.Byte[]]Przekaż obiekt do parametru Value.DWord— służy do REG_DWORD wartości.[System.Int32]Przekaż obiekt do parametru Value.MultiString— służy do REG_MULTI_SZ wartości.[System.String[]]Przekaż obiekt do parametru Value.QWord— służy do REG_QWORD wartości.[System.Int64]Przekaż obiekt do parametru Value.
Wpis rejestru można dodać do wielu lokalizacji, określając tablicę wartości parametru Path :
$newItemPropertySplat = @{
Name = 'PowerShellPath'
PropertyType = 'String'
Value = $PSHome
Path = 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion',
'HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion'
}
New-ItemProperty @newItemPropertySplat
Możesz również zastąpić wstępnie istniejącą wartość wpisu rejestru, dodając parametr Force do dowolnego New-ItemProperty polecenia.
W poniższych przykładach pokazano, jak utworzyć nowe wpisy rejestru różnych typów. Wartości rejestru są tworzone w nowym kluczu o nazwie MySoftwareKey w obszarze HKEY_CURRENT_USER\Software. Zmienna $key jest używana do przechowywania nowego obiektu klucza.
$key = New-Item -Path HKCU:\Software -Name MySoftwareKey
$newItemPropertySplat = @{
Path = $key.PSPath
Name = 'DefaultFolders'
PropertyType = 'MultiString'
Value = 'Home', 'Temp', 'Publish'
}
New-ItemProperty @newItemPropertySplat
DefaultFolders : {Home, Temp, Publish}
PSPath : Microsoft.PowerShell.Core\Registry::HKEY_CURRENT_USER\Software\MySoftwareKey
PSParentPath : Microsoft.PowerShell.Core\Registry::HKEY_CURRENT_USER\Software
PSChildName : MySoftwareKey
PSProvider : Microsoft.PowerShell.Core\Registry
Można użyć właściwości PSPath obiektu klucza w kolejnych poleceniach.
New-ItemProperty -Path $key.PSPath -Name MaxAllowed -PropertyType QWord -Value 1024
MaxAllowed : 1024
PSPath : Microsoft.PowerShell.Core\Registry::HKEY_CURRENT_USER\Software\MySoftwareKey
PSParentPath : Microsoft.PowerShell.Core\Registry::HKEY_CURRENT_USER\Software
PSChildName : MySoftwareKey
PSProvider : Microsoft.PowerShell.Core\Registry
Możesz również przekazać potok $key , aby New-ItemProperty dodać wartość do klucza.
$date = Get-Date -Format 'dd-MMM-yyyy'
$newItemPropertySplat = @{
Name = 'BinaryDate'
PropertyType = 'Binary'
Value = ([System.Text.Encoding]::UTF8.GetBytes($date))
}
$key | New-ItemProperty @newItemPropertySplat
BinaryDate : {51, 49, 45, 74…}
PSPath : Microsoft.PowerShell.Core\Registry::HKEY_CURRENT_USER\Software\MySoftwareKey
PSParentPath : Microsoft.PowerShell.Core\Registry::HKEY_CURRENT_USER\Software
PSChildName : MySoftwareKey
PSProvider : Microsoft.PowerShell.Core\Registry
Wyświetlanie zawartości pokaże $key nowe wpisy.
$key
Hive: HKEY_CURRENT_USER\Software
Name Property
---- --------
MySoftwareKey DefaultFolders : {Home, Temp, Publish}
MaxAllowed : 1024
BinaryDate : {51, 49, 45, 74…}
W poniższym przykładzie przedstawiono typ wartości dla każdego rodzaju wpisu rejestru:
$key.GetValueNames() | Select-Object @{n='ValueName';e={$_}},
@{n='ValueKind';e={$key.GetValueKind($_)}},
@{n='Type';e={$key.GetValue($_).GetType()}},
@{n='Value';e={$key.GetValue($_)}}
ValueName ValueKind Type Value
--------- --------- ---- -----
DefaultFolders MultiString System.String[] {Home, Temp, Publish}
MaxAllowed QWord System.Int64 1024
BinaryDate Binary System.Byte[] {51, 49, 45, 74…}
Zmienianie nazw wpisów rejestru
Aby zmienić nazwę wpisu programu PowerShellPath na "PSHome", użyj polecenia Rename-ItemProperty:
$renameItemPropertySplat = @{
Path = 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion'
Name = 'PowerShellPath'
NewName = 'PSHome'
}
Rename-ItemProperty @renameItemPropertySplat
Aby wyświetlić zmienioną nazwę wartości, dodaj parametr PassThru do polecenia .
$renameItemPropertySplat = @{
Path = 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion'
Name = 'PowerShellPath'
NewName = 'PSHome'
PassThru = $true
}
Rename-ItemProperty @renameItemPropertySplat
Usuwanie wpisów rejestru
Aby usunąć wpisy rejestru PSHome i PowerShellPath, użyj polecenia Remove-ItemProperty:
Remove-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion -Name PSHome
Remove-ItemProperty -Path HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion -Name PowerShellPath