Udostępnij za pośrednictwem


Zmienianie danych rejestru

Dostawca rejestru systemu klasy StdRegProv dla usługi WMI ma następujące metody:

  • Tworzenie lub usuwanie kluczy rejestru.

    Użyj CreateKey lub DeleteKey.

  • Utwórz lub usuń nazwane wartości, które są nazywane wpisami, gdy są przypisane do kluczy.

    Użyj nazwy nowej wartości i SetBinaryValue, SetDWORDValue, SetExpandedStringValue, SetMultiStringValuelub SetStringValue, aby utworzyć nazwaną wartość. Użyj DeleteValue, aby usunąć nazwaną wartość.

  • Zmień nazwane wartości.

    Użyj nazwy wartości i metod Set (zidentyfikowanych w poprzednim punktorze), aby zmienić istniejące nazwane wartości w kluczu. Musisz znać nazwę wartości, aby ją zmienić. Jeśli nie znasz nazw wartości w kluczu, użyj metody EnumValues, aby uzyskać nazwy.

W tym temacie omówiono następujące sekcje:

Tworzenie klucza rejestru przy użyciu języka VBScript

Ponieważ rejestr jest centralną bazą danych konfiguracji dla systemu operacyjnego, aplikacji i usług, należy zachować ostrożność podczas zapisywania zmian wartości rejestru lub usuwania kluczy.

Notatka

Nie można monitorować podklucza HKEY_CLASSES_ROOT klucza HKEY_CURRENT_USER (HKCU). Monitorowanie HKEY_USERS nie jest zalecane, ponieważ podklucze pojawiają się i znikają w miarę ładowania plików rejestru.

 

W poniższych przykładach kodu pokazano, jak utworzyć nowy klucz rejestru i podklucz.

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)

Tworzenie nazwanej wartości rejestru przy użyciu programu PowerShell i języka VBScript

** Poniższy przykład kodu przedstawia, jak utworzyć wartość o określonej nazwie MultiStringValue pod klucz HKEY_LOCAL_MACHINE\SOFTWARE\MyKey\MySubKey, który został utworzony przez poprzedni skrypt. Skrypt wywołuje StdRegProv.SetMultiStringValue, aby zapisywać wartości ciągów w nowej nazwanej wartości.

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

Za pomocą usługi WMI nie można ustawić zabezpieczeń dostępu dla klucza rejestru. Jednak metodaStdRegProv.CheckAccess porównuje ustawienia zabezpieczeń bieżącego użytkownika z deskryptorem zabezpieczeń w kluczu rejestru, aby określić, czy użytkownik ma określone uprawnienia, takie jak KEY_SET_VALUE.