Mengubah Data Registri

Penyedia Registri Sistem kelas StdRegProv untuk WMI memiliki metode yang melakukan hal berikut:

  • Membuat atau menghapus kunci registri.

    Gunakan CreateKey atau DeleteKey.

  • Buat atau hapus nilai bernama, yang disebut entri saat berada di bawah kunci tertentu.

    Gunakan nama nilai baru dan SetBinaryValue, SetDWORDValue, SetExpandedStringValue, SetMultiStringValue, atau SetStringValue untuk membuat nilai bernama. Gunakan DeleteValue untuk menghapus nilai bernama.

  • Ubah nilai bernama.

    Gunakan nama nilai dan metode Set (seperti yang diidentifikasi dalam poin sebelumnya) untuk mengubah nilai bernama yang ada di bawah sebuah kunci. Anda harus mengetahui nama nilai untuk mengubahnya. Jika Anda tidak mengetahui nama nilai di bawah kunci, gunakan metode EnumValues untuk mendapatkan nama.

Bagian berikut dibahas dalam topik ini:

Membuat Kunci Registri Menggunakan VBScript

Karena registri adalah database konfigurasi pusat untuk sistem operasi, aplikasi, dan layanan, berhati-hatilah saat Anda menulis perubahan pada nilai registri atau menghapus kunci.

Nota

Anda tidak dapat memantau subkunci HKEY_CLASSES_ROOT dari HKEY_CURRENT_USER (HKCU). Pemantauan HKEY_USERS tidak disarankan karena subkunci muncul dan menghilang saat hive dimuat.

 

Contoh kode berikut menunjukkan cara membuat kunci registri baru dan subkunci.

HKEY_LOCAL_MACHINE = &H80000002
strComputer = "."

Set ObjRegistry = GetObject("winmgmts:{impersonationLevel = impersonate}!\\" & strComputer & "\root\default:StdRegProv")

strPath = "SOFTWARE\MyKey\MySubKey"

Return = objRegistry.CreateKey(HKEY_LOCAL_MACHINE, strPath)

If Return <> 0 Then
    WScript.Echo "The operation failed." & Err.Number
    WScript.Quit
Else
    wScript.Echo "New registry key created" & VBCRLF & "HKLM\SOFTWARE\MYKey\"

End If

$HKEY_LOCAL_MACHINE = 2147483650 
$strComputer = "."
$strPath = "SOFTWARE\MyKey\MySubKey"

$reg = [wmiclass]"\\$strComputer\root\default:StdRegprov"

[void]$reg.CreateKey($HKEY_LOCAL_MACHINE, $strPath)

Membuat Nilai Registri Bernama Menggunakan PowerShell dan VBScript

Contoh kode berikut menunjukkan cara membuat nilai bernama yang disebut MultiStringValue di bawah HKEY_LOCAL_MACHINE\SOFTWARE\MyKey\kunci MySubKey yang dibuat skrip sebelumnya. Skrip memanggil StdRegProv.SetMultiStringValue untuk menulis nilai string ke nilai bernama baru.

const HKEY_LOCAL_MACHINE = &H80000002 
strComputer = "."

Set objRegistry = _
    GetObject("winmgmts:{impersonationLevel=impersonate}!\\" _ 
    & strComputer & "\root\default:StdRegProv")

strKeyPath = "SOFTWARE\MyKey\MySubKey"
strValueName = "MultiStringValue"
arrStringValues = Array("one", "two","three", "four")

objRegistry.SetMultiStringValue HKEY_LOCAL_MACHINE, strKeyPath,_
    strValueName, arrStringValues

' Read the values that were just written
objRegistry.GetMultiStringValue HKEY_LOCAL_MACHINE, strKeyPath,_
    strValueName, arrStringValues   

For Each strValue in arrStringValues
    WScript.Echo strValue 
Next

$HKEY_LOCAL_MACHINE = 2147483650 
$strComputer = "."
$strPath = "SOFTWARE\MyKey\MySubKey"

$strValueName = "MultiStringValue"
$arrStringValues = @("one", "two","three", "four")

$reg = [wmiclass]"\\$strComputer\root\default:StdRegprov"

[void]$reg.SetMultiStringValue($HKEY_LOCAL_MACHINE, $strKeyPath, $strValueName, $arrStringValues)

$multiValues = $reg.GetMultiStringValue($HKEY_LOCAL_MACHINE, $strKeyPath, $strValueName)
$multiValues.sValue

Dengan menggunakan WMI, Anda tidak dapat mengatur keamanan akses pada kunci registri. Namun, metodeStdRegProv.CheckAccess membandingkan pengaturan keamanan pengguna saat ini dengan deskriptor keamanan pada kunci registri untuk menentukan apakah pengguna memiliki izin tertentu, seperti KEY_SET_VALUE.