Bekerja dengan entri registri
Sampel ini hanya berlaku untuk platform Windows.
Karena entri registri adalah properti kunci dan, dengan demikian, tidak dapat langsung dijelajahi, kita perlu mengambil pendekatan yang sedikit berbeda saat bekerja dengannya.
Mencantumkan entri registri
Ada banyak cara berbeda untuk memeriksa entri registri. Cara paling sederhana adalah dengan mendapatkan nama properti yang terkait dengan kunci. Misalnya, untuk melihat nama entri dalam kunci HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion
registri , gunakan Get-Item
. Kunci registri memiliki properti dengan nama generik "Properti" yang merupakan daftar entri registri di kunci. Perintah berikut memilih properti Properti dan memperluas item sehingga item ditampilkan dalam daftar:
Get-Item -Path Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion |
Select-Object -ExpandProperty Property
DevicePath
MediaPathUnexpanded
ProgramFilesDir
CommonFilesDir
ProductId
Untuk melihat entri registri dalam bentuk yang lebih mudah dibaca, gunakan 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
Properti terkait Windows PowerShell untuk kunci semuanya diawali dengan "PS", seperti PSPath, PSParentPath, PSChildName, dan PSProvider.
Anda dapat menggunakan *.*
notasi untuk merujuk ke lokasi saat ini. Anda dapat menggunakan Set-Location
untuk mengubah ke kontainer registri CurrentVersion terlebih dahulu:
Set-Location -Path Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion
Atau, Anda dapat menggunakan PSDrive bawaan HKLM:
dengan Set-Location
:
Set-Location -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion
Anda kemudian dapat menggunakan .
notasi untuk lokasi saat ini untuk mencantumkan properti tanpa menentukan jalur lengkap:
Get-ItemProperty -Path .
...
DevicePath : C:\WINDOWS\inf
MediaPathUnexpanded : C:\WINDOWS\Media
ProgramFilesDir : C:\Program Files
...
Ekspansi jalur berfungsi sama seperti yang dilakukan dalam sistem file, jadi dari lokasi ini Anda bisa mendapatkan daftar ItemProperty untuk HKLM:\SOFTWARE\Microsoft\Windows\Help
menggunakan Get-ItemProperty -Path ..\Help
.
Mendapatkan entri registri tunggal
Jika Anda ingin mengambil entri tertentu dalam kunci registri, Anda dapat menggunakan salah satu dari beberapa pendekatan yang mungkin. Contoh ini menemukan nilai DevicePath di HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion
.
Menggunakan Get-ItemProperty
, gunakan parameter Jalur untuk menentukan nama kunci, dan parameter Nama untuk menentukan nama entri 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
Perintah ini mengembalikan properti Windows PowerShell standar serta properti DevicePath .
Catatan
Meskipun Get-ItemProperty
memiliki parameter Filter, Sertakan, dan Kecualikan , parameter tersebut tidak dapat digunakan untuk memfilter menurut nama properti. Parameter ini mengacu pada kunci registri, yang merupakan jalur item dan bukan entri registri, yang merupakan properti item.
Opsi lain adalah menggunakan reg.exe
alat baris perintah. Untuk bantuan dengan reg.exe
, ketik reg.exe /?
pada prompt perintah. Untuk menemukan entri DevicePath , gunakan reg.exe
seperti yang ditunjukkan dalam perintah berikut:
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
Anda juga dapat menggunakan objek WshShell COM untuk menemukan beberapa entri registri, meskipun metode ini tidak berfungsi dengan data biner besar atau dengan nama entri registri yang menyertakan karakter seperti garis miring terbalik (\
). Tambahkan nama properti ke jalur item dengan pemisah \
:
(New-Object -ComObject WScript.Shell).RegRead("HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\DevicePath")
%SystemRoot%\inf
Mengatur entri registri tunggal
Jika Anda ingin mengubah entri tertentu dalam kunci registri, Anda dapat menggunakan salah satu dari beberapa pendekatan yang mungkin. Contoh ini memodifikasi entri Jalur di bawah HKEY_CURRENT_USER\Environment
. Entri Jalur menentukan tempat menemukan file yang dapat dieksekusi.
- Ambil nilai entri Jalur saat ini menggunakan
Get-ItemProperty
. - Tambahkan nilai baru, pisahkan dengan
;
. - Gunakan
Set-ItemProperty
dengan kunci, nama entri, dan nilai yang ditentukan untuk mengubah entri registri.
$value = Get-ItemProperty -Path HKCU:\Environment -Name Path
$newpath = $value.Path += ";C:\src\bin\"
Set-ItemProperty -Path HKCU:\Environment -Name Path -Value $newpath
Catatan
Meskipun Set-ItemProperty
memiliki parameter Filter, Sertakan, dan Kecualikan , parameter tersebut tidak dapat digunakan untuk memfilter menurut nama properti. Parameter ini mengacu pada kunci registri—yang merupakan jalur item—dan bukan entri registri—yang merupakan properti item.
Opsi lain adalah menggunakan alat baris perintah Reg.exe. Untuk bantuan terkait reg.exe, ketik reg.exe /?
pada prompt perintah.
Contoh berikut mengubah entri Jalur dengan menghapus jalur yang ditambahkan dalam contoh di atas.
Get-ItemProperty
masih digunakan untuk mengambil nilai saat ini untuk menghindari keharusan mengurai string yang dikembalikan dari reg query
. Metode SubString dan LastIndexOf digunakan untuk mengambil jalur terakhir yang ditambahkan ke entri Jalur .
$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.
Membuat entri registri baru
Untuk menambahkan entri baru bernama "PowerShellPath" ke kunci CurrentVersion , gunakan New-ItemProperty
dengan jalur ke kunci, nama entri, dan nilai entri. Untuk contoh ini, kita akan mengambil nilai variabel $PSHome
Windows PowerShell , yang menyimpan jalur ke direktori penginstalan untuk Windows PowerShell.
Anda dapat menambahkan entri baru ke kunci menggunakan perintah berikut, dan perintah juga mengembalikan informasi tentang entri baru:
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 harus merupakan nama anggota enumerasi Microsoft.Win32.RegistryValueKind dari tabel berikut:
Nilai PropertyType | Makna |
---|---|
Biner | Data biner |
DWord | Angka yang merupakan UInt32 yang valid |
ExpandString | String yang dapat berisi variabel lingkungan yang diperluas secara dinamis |
MultiString | String multibaris |
String | Nilai string apa pun |
QWord | 8 byte data biner |
Anda dapat menambahkan entri registri ke beberapa lokasi dengan menentukan array nilai untuk parameter Jalur :
New-ItemProperty -Name PowerShellPath -PropertyType String -Value $PSHome `
-Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion, HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion
Anda juga dapat menimpa nilai entri registri yang sudah ada sebelumnya dengan menambahkan parameter Force ke perintah apa pun New-ItemProperty
.
Mengganti nama entri registri
Untuk mengganti nama entri PowerShellPath menjadi "PSHome," gunakan Rename-ItemProperty
:
Rename-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion -Name PowerShellPath -NewName PSHome
Untuk menampilkan nilai yang diganti namanya, tambahkan parameter PassThru ke perintah .
Rename-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion -Name PowerShellPath -NewName PSHome -passthru
Menghapus entri registri
Untuk menghapus entri registri PSHome dan PowerShellPath, gunakan Remove-ItemProperty
:
Remove-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion -Name PSHome
Remove-ItemProperty -Path HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion -Name PowerShellPath
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk