Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Anda dapat memperoleh atau memodifikasi data registri dengan menggunakan kelas WMI StdRegProv dan metodenya. Saat menggunakan utilitas Regedit untuk melihat dan mengubah nilai registri di komputer lokal, StdRegProv memungkinkan Anda menggunakan skrip atau aplikasi untuk mengotomatiskan aktivitas tersebut di komputer lokal dan komputer jarak jauh.
StdRegProv berisi metode untuk melakukan hal berikut:
- Memverifikasi izin akses untuk pengguna
- Membuat, menghitung, dan menghapus kunci registri
- Membuat, menguraikan, dan menghapus subkunci atau nilai bernama
- Membaca, menulis, dan menghapus nilai data
Data registri diatur oleh cabang, kunci, dan subkunci yang disarangkan di bawah kunci tingkat atas. Nilai data aktual disebut entri atau nilai bernama.
Subpohon berikut mencakup:
- HKEY_CLASSES_ROOT (disingkat HKCR)
- HKEY_CURRENT_USER (HKCU)
- HKEY_LOCAL_MACHINE (HKLM)
- HKEY_USERS
- HKEY_CURRENT_CONFIG
Misalnya, dalam entri \\Microsoft\DirectX\InstalledVersion, subtree HKEY adalah SOFTWARE; subkunci adalah Microsoft dan DirectX; dan entri nilai bernama InstalledVersion.
RegistryKeyChangeEvent terjadi ketika perubahan pada kunci tertentu terjadi, tetapi entri tidak mengidentifikasi bagaimana nilai berubah atau akan peristiwa ini dipicu oleh perubahan di bawah kunci yang ditentukan. Untuk mengidentifikasi perubahan di mana saja dalam struktur kunci hierarkis, gunakan RegistryTreeChangeEvent, yang tidak mengembalikan nilai tertentu atau perubahan kunci yang terjadi. Untuk mendapatkan perubahan nilai entri tertentu, gunakan RegistryValueChangeEvent, lalu baca entri untuk mendapatkan nilai garis besar.
StdRegProv hanya memiliki metode yang dapat dipanggil dari C++ atau skrip, yang berbeda dari struktur kelas Win32.
Contoh kode berikut menunjukkan cara menggunakan metode StdRegProv.EnumKey untuk mencantumkan semua subkuntang perangkat lunak Microsoft di bawah kunci registri.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft
const HKEY_LOCAL_MACHINE = &H80000002
strComputer = "."
Set objReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv")
strKeyPath = "SOFTWARE\Microsoft"
objReg.EnumKey HKEY_LOCAL_MACHINE, strKeyPath, arrSubKeys
For Each subkey In arrSubKeys
Wscript.Echo subkey
Next
Catatan
VBScript tidak digunakan lagi. Untuk detailnya, lihat posting blog penghentian VBScript: Garis waktu dan langkah berikutnya.
# The signature for EnumKey method of StdRegProv class:
#
# uint32 EnumKey(
# [in] uint32 hDefKey = HKEY_LOCAL_MACHINE,
# [in] string sSubKeyName,
# [out] string sNames[]
# );
$arguments = @{
hDefKey = [uint32]2147483650 # HKEY_LOCAL_MACHINE
sSubKeyName = 'SOFTWARE\Microsoft'
}
$subkeys = Invoke-CimMethod -ClassName StdRegProv -MethodName EnumKey -Arguments $arguments
subkeys.sNames
StdRegProv memiliki metode yang berbeda untuk membaca berbagai jenis data nilai entri registri. Jika entri memiliki nilai yang tidak diketahui, maka Anda dapat memanggil StdRegProv.EnumValues untuk mencantumkannya. Tabel berikut mencantumkan korespondensi antara metode StdRegProv dan jenis data.
| Metode | Jenis Data |
|---|---|
| GetBinaryValue | REG_BINARY |
| GetDWORDValue | REG_DWORD |
| GetExpandedStringValue | REG_EXPAND_SZ |
| GetMultiStringValue | REG_MULTI_SZ |
| GetStringValue | REG_SZ |
Tabel berikut mencantumkan metode terkait untuk membuat kunci atau nilai baru, atau mengubah yang sudah ada.
| Metode | Jenis Data |
|---|---|
| SetBinaryValue | REG_BINARY |
| SetDWORDValue | REG_DWORD |
| SetExpandedStringValue | REG_EXPAND_SZ |
| SetMultiStringValue | REG_MULTI_SZ |
| SetStringValue | REG_SZ |
Contoh berikut menunjukkan cara membaca daftar sumber untuk log peristiwa sistem dari kunci registri.
HKEY_LOCAL_MACHINE\SYSTEM\Current Control Set\Services\Eventlog\System
Perhatikan bahwa item dalam nilai multistring diperlakukan sebagai koleksi atau array.
const HKEY_LOCAL_MACHINE = &H80000002
strComputer = "."
Set objReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv")
strKeyPath = "SYSTEM\CurrentControlSet\Services\Eventlog\System"
objReg.EnumKey HKEY_LOCAL_MACHINE, strKeyPath, arrSubKeys
For Each subkey In arrSubKeys
Wscript.Echo subkey
Next
Catatan
VBScript tidak digunakan lagi. Untuk detailnya, lihat posting blog penghentian VBScript: Garis waktu dan langkah berikutnya.
# The signature for EnumKey method of StdRegProv class:
#
# uint32 EnumKey(
# [in] uint32 hDefKey = HKEY_LOCAL_MACHINE,
# [in] string sSubKeyName,
# [out] string sNames[]
# );
$arguments = @{
hDefKey = [uint32]2147483650 # HKEY_LOCAL_MACHINE
sSubKeyName = 'SYSTEM\CurrentControlSet\Services\Eventlog\System'
}
$subkeys = Invoke-CimMethod -ClassName StdRegProv -MethodName EnumKey -Arguments $arguments
subkeys.sNames
Penyedia registri dihosting di LocalService—bukan LocalSystem. Oleh karena itu, mendapatkan informasi dari jarak jauh dari subtree HKEY_CURRENT_USER tidak dimungkinkan. Namun, skrip yang dijalankan di komputer lokal masih dapat mengakses HKEY_CURRENT_USER. Anda dapat mengatur model hosting ke LocalSystem pada komputer jarak jauh, tetapi itu adalah risiko keamanan karena registri pada komputer jarak jauh rentan terhadap akses bermusuhan. Untuk informasi selengkapnya, lihat Penyedia Hosting dan Keamanan.
Topik terkait