Práce s položkami registru
Tato ukázka platí jenom pro platformy Windows.
Vzhledem k tomu, že položky registru jsou vlastnosti klíčů a například není možné je přímo procházet, musíme při práci s nimi vzít trochu jiný přístup.
Výpis položek registru
Existuje mnoho různých způsobů, jak prozkoumat položky registru. Nejjednodušší způsob je získat názvy vlastností přidružené ke klíči. Chcete-li například zobrazit názvy položek v klíči HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion
registru , použijte Get-Item
. Klíče registru mají vlastnost s obecným názvem "Property", který je seznam položek registru v klíči. Následující příkaz vybere vlastnost Vlastnost a rozbalí položky tak, aby se zobrazily v seznamu:
Get-Item -Path Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion |
Select-Object -ExpandProperty Property
DevicePath
MediaPathUnexpanded
ProgramFilesDir
CommonFilesDir
ProductId
Chcete-li zobrazit položky registru v čitelnějším formuláři, použijte 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
Vlastnosti související s Windows PowerShellem pro klíč mají předponu PS, například PSPath, PSParentPath, PSChildName a PSProvider.
Zápis můžete použít *.*
k odkazování na aktuální umístění. Nejprve můžete změnit Set-Location
na kontejner registru CurrentVersion :
Set-Location -Path Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion
Alternativně můžete použít integrovaný HKLM:
PSDrive s Set-Location
:
Set-Location -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion
Zápis pro aktuální umístění pak můžete použít .
k výpisu vlastností bez zadání úplné cesty:
Get-ItemProperty -Path .
...
DevicePath : C:\WINDOWS\inf
MediaPathUnexpanded : C:\WINDOWS\Media
ProgramFilesDir : C:\Program Files
...
Rozšíření cesty funguje stejně jako v rámci systému souborů, takže z tohoto umístění můžete získat výpis ItemProperty pro HKLM:\SOFTWARE\Microsoft\Windows\Help
použití Get-ItemProperty -Path ..\Help
.
Získání jedné položky registru
Pokud chcete načíst konkrétní položku v klíči registru, můžete použít jeden z několika možných přístupů. Tento příklad najde hodnotu DevicePath v HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion
.
Pomocí Get-ItemProperty
parametru Path zadejte název klíče a parametr Name k zadání názvu položky 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
Tento příkaz vrátí standardní vlastnosti Windows PowerShellu a také vlastnost DevicePath .
Poznámka:
Přestože Get-ItemProperty
má parametry Filter, Include a Exclude , nelze je použít k filtrování podle názvu vlastnosti. Tyto parametry odkazují na klíče registru, což jsou cesty položek, nikoli položky registru, což jsou vlastnosti položky.
Další možností je použít nástroj příkazového reg.exe
řádku. Nápovědu k reg.exe
příkazu pište reg.exe /?
na příkazovém řádku. Pokud chcete najít položku DevicePath , použijte reg.exe
ji, jak je znázorněno v následujícím příkazu:
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
Objekt COM WshShellu můžete také použít k vyhledání některých položek registru, i když tato metoda nefunguje s velkými binárními daty nebo s názvy položek registru, které obsahují znaky, jako je zpětné lomítko (\
). Připojte název vlastnosti k cestě k položce s oddělovačem \
:
(New-Object -ComObject WScript.Shell).RegRead("HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\DevicePath")
%SystemRoot%\inf
Nastavení jedné položky registru
Pokud chcete změnit určitou položku v klíči registru, můžete použít jeden z několika možných přístupů. Tento příklad upraví položku Path v části HKEY_CURRENT_USER\Environment
. Položka Cesta určuje, kam se mají najít spustitelné soubory.
- Načte aktuální hodnotu položky Cesta pomocí
Get-ItemProperty
. - Přidejte novou hodnotu a oddělte ji pomocí parametru
;
. - K úpravě položky registru použijte
Set-ItemProperty
zadaný klíč, název položky a hodnotu.
$value = Get-ItemProperty -Path HKCU:\Environment -Name Path
$newpath = $value.Path += ";C:\src\bin\"
Set-ItemProperty -Path HKCU:\Environment -Name Path -Value $newpath
Poznámka:
Přestože Set-ItemProperty
má parametry Filter, Include a Exclude , nelze je použít k filtrování podle názvu vlastnosti. Tyto parametry odkazují na klíče registru , což jsou cesty položek, a ne položky registru, které jsou vlastnostmi položky.
Další možností je použít nástroj příkazového řádku Reg.exe. Nápovědu k reg.exe reg.exe /?
pište na příkazovém řádku.
Následující příklad změní položku Path odebráním cesty přidané v příkladu výše.
Get-ItemProperty
se stále používá k načtení aktuální hodnoty, aby se nemusel analyzovat řetězec vrácený z reg query
. Metody SubString a LastIndexOf slouží k načtení poslední cesty přidané do položky Path .
$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.
Vytváření nových položek registru
Chcete-li přidat novou položku s názvem "PowerShellPath" do klíče CurrentVersion , použijte New-ItemProperty
s cestou ke klíči, název položky a hodnotu položky. V tomto příkladu použijeme hodnotu proměnné $PSHome
Prostředí Windows PowerShell, která ukládá cestu k instalačnímu adresáři prostředí Windows PowerShell.
Novou položku můžete do klíče přidat pomocí následujícího příkazu a příkaz také vrátí informace o nové položce:
New-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion -Name PowerShellPath -PropertyType String -Value $PSHome
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
PropertyType musí být název člena výčtu Microsoft.Win32.RegistryValueKind z následující tabulky:
Hodnota PropertyType | Význam |
---|---|
Binární | Binární data |
Dword | Číslo, které je platné UInt32 |
ExpandString | Řetězec, který může obsahovat proměnné prostředí, které se dynamicky rozšiřují |
MultiString | Víceřádkový řetězec |
String | Libovolná řetězcová hodnota |
QWord | 8 bajtů binárních dat |
Položku registru můžete přidat do více umístění zadáním pole hodnot pro parametr Path :
New-ItemProperty -Name PowerShellPath -PropertyType String -Value $PSHome `
-Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion, HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion
Můžete také přepsat předem existující hodnotu položky registru přidáním parametru Force do libovolného New-ItemProperty
příkazu.
Přejmenování položek registru
Chcete-li přejmenovat položku PowerShellPath na PSHome, použijte Rename-ItemProperty
:
Rename-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion -Name PowerShellPath -NewName PSHome
Pokud chcete zobrazit přejmenovanou hodnotu, přidejte do příkazu parametr PassThru .
Rename-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion -Name PowerShellPath -NewName PSHome -passthru
Odstraňování položek registru
Pokud chcete odstranit položky registru PSHome i PowerShellPath, použijte Remove-ItemProperty
:
Remove-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion -Name PSHome
Remove-ItemProperty -Path HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion -Name PowerShellPath
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro