Kayıt Defteri Girdileri ile Çalışma

Kayıt defteri girdileri anahtarların özellikleri olduğundan ve bu nedenle doğrudan gözatılamadığından, bunlarla çalışırken biraz farklı bir yaklaşım ele almanız gerekir.

Kayıt defteri girdilerini listeleme

Kayıt defteri girişlerini incelemenize yönelik birçok farklı yol vardır. En basit yol, bir anahtarla ilişkili özellik adlarını almak için kullanılır. Örneğin, kayıt defteri anahtarındaki girişlerin adlarını görmek için HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion kullanın Get-Item . Kayıt defteri anahtarlarının, anahtardaki kayıt defteri girdilerinin bir listesi olan "Property" genel adına sahip bir özelliği vardır. Aşağıdaki komut, özellik özelliğini seçer ve öğeleri bir listede görüntülenmek üzere genişletir:

Get-Item -Path Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion |
  Select-Object -ExpandProperty Property
DevicePath
MediaPathUnexpanded
ProgramFilesDir
CommonFilesDir
ProductId

Kayıt defteri girişlerini daha okunabilir bir biçimde görüntülemek için şunu kullanın Get-ItemProperty :

Get-ItemProperty -Path Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion
PSPath              : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SO
                      FTWARE\Microsoft\Windows\CurrentVersion
PSParentPath        : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SO
                      FTWARE\Microsoft\Windows
PSChildName         : CurrentVersion
PSDrive             : HKLM
PSProvider          : Microsoft.PowerShell.Core\Registry
DevicePath          : C:\WINDOWS\inf
MediaPathUnexpanded : C:\WINDOWS\Media
ProgramFilesDir     : C:\Program Files
CommonFilesDir      : C:\Program Files\Common Files
ProductId           : 76487-338-1167776-22465
WallPaperDir        : C:\WINDOWS\Web\Wallpaper
MediaPath           : C:\WINDOWS\Media
ProgramFilesPath    : C:\Program Files
PF_AccessoriesName  : Accessories
(default)           :

anahtarın Windows PowerShell ilişkili özellikleri, pspath, psparentpath, pschildname ve psprovider gibi "PS" önekini alır.

*.*Geçerli konuma başvurmak için gösterimini kullanabilirsiniz. Set-LocationÖnce CurrentVersion kayıt defteri kapsayıcısına geçiş yapmak için kullanabilirsiniz:

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

Alternatif olarak, yerleşik HKLM PSDrive 'ı ile kullanabilirsiniz Set-Location :

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

Ardından, *.* bir tam yol belirtmeden özellikleri listelemek için geçerli konumun gösterimini kullanabilirsiniz:

Get-ItemProperty -Path .
...
DevicePath          : C:\WINDOWS\inf
MediaPathUnexpanded : C:\WINDOWS\Media
ProgramFilesDir     : C:\Program Files
...

Yol genişletmesi dosya sistemi içinde olduğu gibi çalışarak, bu konumdan öğesini kullanarak için ItemProperty listesini alabilirsiniz HKLM:\SOFTWARE\Microsoft\Windows\Help Get-ItemProperty -Path ..\Help .

Tek bir kayıt defteri girdisi alma

Bir kayıt defteri anahtarında belirli bir girişi almak istiyorsanız, olası birçok yaklaşımdan birini kullanabilirsiniz. Bu örnek, içindeki DevicePath 'in değerini bulur HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion .

Kullanarak Get-ItemProperty , anahtar adını belirtmek Için yol parametresini ve DevicePath girişinin adını belirtmek için Name parametresini kullanın.

Get-ItemProperty -Path HKLM:\Software\Microsoft\Windows\CurrentVersion -Name DevicePath
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
DevicePath   : C:\WINDOWS\inf

bu komut, standart Windows PowerShell özelliklerinin yanı sıra DevicePath özelliğini de döndürür.

Not

, Get-ItemProperty Filtre, içerme ve dışlama parametrelerine sahip olsa da, özellik adına göre filtrelemek için kullanılamaz. Bu parametreler öğe yolları olan ve öğe özellikleri olan kayıt defteri girdileri olmayan kayıt defteri anahtarlarına başvurur.

Başka bir seçenek de Reg.exe komut satırı aracını kullanmaktır. reg.exe yardım için reg.exe /? komut istemine yazın. DevicePath girişini bulmak için aşağıdaki komutta gösterildiği gibi reg.exe kullanın:

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

Ayrıca, bazı kayıt defteri girişlerini bulmak için WshShell com nesnesini kullanabilirsiniz, ancak bu yöntem büyük ikili verilerle ve ters eğik çizgi () gibi karakterler içeren kayıt defteri giriş adlarıyla çalışmaz \ . Özellik adını bir ayırıcıyla birlikte öğe yoluna ekleyin \ :

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

Tek bir kayıt defteri girişi ayarlama

Kayıt defteri anahtarındaki belirli bir girişi değiştirmek istiyorsanız, olası birçok yaklaşımdan birini kullanabilirsiniz. Bu örnek, altında yol girdisini değiştirir HKEY_CURRENT_USER\Environment . Yol girdisi, çalıştırılabilir dosyaların nerede bulunacağını belirtir.

  1. Kullanarak yol girişinin geçerli değerini alın Get-ItemProperty .
  2. Yeni değeri bir ile ayırarak ekleyin ; .
  3. Set-ItemPropertyKayıt defteri girişini değiştirmek için belirtilen anahtar, giriş adı ve değeri ile kullanın.
$value = Get-ItemProperty -Path HKCU:\Environment -Name Path
$newpath = $value.Path += ";C:\src\bin\"
Set-ItemProperty -Path HKCU:\Environment -Name Path -Value $newpath

Not

, Set-ItemProperty Filtre, içerme ve dışlama parametrelerine sahip olsa da, özellik adına göre filtrelemek için kullanılamaz. Bu parametreler öğe yolları olan kayıt defteri anahtarlarına (öğe özellikleri olan kayıt defteri girdilerini) başvurur.

Başka bir seçenek de Reg.exe komut satırı aracını kullanmaktır. reg.exe yardım için reg.exe/? yazın. bir komut isteminde.

Aşağıdaki örnekte, yukarıdaki örnekte eklenen yolu kaldırarak yol girişi değiştirilir. Get-ItemProperty , öğesinden döndürülen dizeyi ayrıştırmaya gerek kalmadan geçerli değeri almak için hala kullanılmaktadır reg query . SubString ve LastIndexOf yöntemleri, yol girdisine eklenen son yolu almak için kullanılır.

$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.

Yeni kayıt defteri girişleri oluşturma

CurrentVersion anahtarına "PowerShellPath" adlı yeni bir giriş eklemek için, New-ItemProperty anahtarın yolu, giriş adı ve girişin değeri ile kullanın. bu örnek için, $PSHome Windows PowerShell için yükleme dizini yolunu depolayan Windows PowerShell değişkeninin değerini alacak.

Aşağıdaki komutu kullanarak yeni girişi anahtara ekleyebilirsiniz ve komut ayrıca yeni girdi hakkında bilgi döndürür:

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 , aşağıdaki tablodaki bir Microsoft. Win32. RegistryValueKind numaralandırma üyesinin adı olmalıdır:

PropertyType değeri Anlamı
İkili İkili veriler
Ekleyebileceği Geçerli bir UInt32 türü olan sayı
ExpandString Dinamik olarak genişletilen ortam değişkenleri içerebilen bir dize
Çoklu dize Çok satırlı dize
Dize Herhangi bir dize değeri
'Ün 8 bayt ikili veri

Not

Yol parametresi için bir değer dizisi belirterek birden çok konuma bir kayıt defteri girişi ekleyebilirsiniz:

New-ItemProperty -Name PowerShellPath -PropertyType String -Value $PSHome `
  -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion, HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion

Ayrıca, herhangi bir komuta zorla parametresini ekleyerek, önceden var olan bir kayıt defteri giriş değerinin üzerine yazabilirsiniz New-ItemProperty .

Kayıt defteri girdilerini yeniden adlandırma

Powershellpath girişini "PSHome" olarak yeniden adlandırmak için şunu kullanın Rename-ItemProperty :

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

Yeniden adlandırılan değeri göstermek için, komutuna geçiş parametresini ekleyin .

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

Kayıt defteri girdilerini silme

PSHome ve PowerShellPath kayıt defteri girdilerini silmek için şunu kullanın Remove-ItemProperty :

Remove-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion -Name PSHome
Remove-ItemProperty -Path HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion -Name PowerShellPath