Kayıt Defteri Verilerini Değiştirme
WMI için Sistem Kayıt Defteri Sağlayıcısı sınıfı StdRegProv aşağıdakileri yapacak yöntemlere sahiptir:
Kayıt defteri anahtarlarını oluşturun veya silin.
Anahtarlar altındayken girdi olarak adlandırılan adlandırılmış değerleri oluşturun veya silin.
Adlandırılmış bir değer oluşturmak için yeni bir değerin adını ve SetBinaryValue, SetDWORDValue, SetExpandedStringValue, SetMultiStringValueveya SetStringValue kullanın. Adlandırılmış bir değeri silmek için DeleteValue kullanın.
Adlandırılmış değerleri değiştirin.
Bir anahtarın altında mevcut adlandırılmış değerleri değiştirmek için bir değerin adını ve önceki madde işaretinde tanımlanan Set yöntemlerini kullanın. Değiştirmek için bir değerin adını bilmeniz gerekir. Anahtar altındaki değer adlarını bilmiyorsanız adları almak için EnumValues yöntemini kullanın.
Bu konuda aşağıdaki bölümler ele alınmıştır:
- VBScript Kullanarak Kayıt Defteri Anahtarı Oluşturma
- PowerShell ve VBScript Kullanarak Adlandırılmış Kayıt Defteri Değeri Oluşturma
VBScript Kullanarak Kayıt Defteri Anahtarı Oluşturma
Kayıt defteri işletim sistemi, uygulamalar ve hizmetler için merkezi yapılandırma veritabanı olduğundan, kayıt defteri değerlerinde değişiklik yazarken veya anahtarları silerken dikkatli olun.
Not
HKEY_CURRENT_USER(HKCU)HKEY_CLASSES_ROOT alt anahtarını izleyemezsiniz. Hivelar yüklenirken alt anahtarlar ortaya çıkıp kaybolduğundan HKEY_USERS izlemek önerilmez.
Aşağıdaki kod örnekleri, yeni bir kayıt defteri anahtarının ve alt anahtarın nasıl oluşturulacağını gösterir.
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)
PowerShell ve VBScript Kullanarak Adlandırılmış Kayıt Defteri Değeri Oluşturma
Aşağıdaki kod örneği, önceki betiğin oluşturduğu HKEY_LOCAL_MACHINE\SOFTWARE\MyKey\MySubKey anahtarı altında MultiStringValue adlı adlandırılmış bir değerin nasıl oluşturulacağını gösterir. Betik, dize değerlerini yeni adlandırılmış bir değere yazmak için StdRegProv.SetMultiStringValueçağırır.
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
WMI kullanarak, kayıt defteri anahtarında erişim güvenliğini ayarlayamazsınız. Ancak, StdRegProv.CheckAccess yöntemi, kullanıcının KEY_SET_VALUEgibi belirli bir izni olup olmadığını belirlemek için geçerli kullanıcının güvenlik ayarlarını kayıt defteri anahtarındaki güvenlik tanımlayıcısı ile karşılaştırır.