Aracılığıyla paylaş


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.

    CreateKey veya DeleteKeykullanın.

  • 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

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.