Ändern von Registrierungsdaten
Die Systemregistrierungsanbieter-Klasse StdRegProv für WMI enthält Methoden, die Folgendes ausführen:
Erstellen oder Löschen von Registrierungsschlüsseln
Erstellen oder löschen Sie benannte Werte, die als „Einträge“ bezeichnet werden, wenn sie sich unter Schlüsseln befinden.
Verwenden Sie den Namen eines neuen Werts und SetBinaryValue, SetDWORDValue, SetExpandedStringValue, SetMultiStringValue oder SetStringValue zum Erstellen eines benannten Werts. Verwenden Sie DeleteValue zum Löschen eines benannten Werts.
Ändern Sie benannte Werte.
Verwenden Sie den Namen eines Werts und die ( im vorhergehenden Aufzählungselement identifizierten) „Set“-Methoden zum Ändern von vorhandenen benannten Werten unter einem Schlüssel. Sie müssen den Namen eines Werts kennen, um ihn ändern zu können. Wenn Sie die Wertnamen unter einem Schlüssel nicht kennen, verwenden Sie die Methode EnumValues zum Abrufen der Namen.
In diesem Thema werden die folgenden Abschnitte behandelt:
- Erstellen eines Registrierungsschlüssels mithilfe von VBScript
- Erstellen eines benannten Registrierungswerts mithilfe von PowerShell und VBScript
Erstellen eines Registrierungsschlüssels mithilfe von VBScript
Weil die Registrierung die zentrale Konfigurationsdatenbank für das Betriebssystem, Anwendungen und Dienste ist, seien Sie vorsichtig beim Schreiben von Änderungen an Registrierungswerten oder beim Löschen von Schlüsseln.
Hinweis
Sie können den Unterschlüssel HKEY_CLASSES_ROOT von HKEY_CURRENT_USER(HKCU) nicht überwachen. Die Überwachung von HKEY_USERS wird nicht empfohlen, weil die Unterschlüssel beim Laden von Strukturen angezeigt und ausgeblendet werden.
Die folgenden Codebeispiele zeigen, wie Sie einen neuen Registrierungsschlüssel und einen Unterschlüssel erstellen.
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)
Erstellen eines benannten Registrierungswerts mithilfe von PowerShell und VBScript
Das folgende Codebeispiel zeigt, wie Sie den benannten Wert MultiStringValue unter dem Schlüssel HKEY_LOCAL_MACHINE\SOFTWARE\MyKey\MySubKey erstellen, der durch das vorhergehende Skript erstellt wurde. Das Skript ruft StdRegProv.SetMultiStringValue auf, um Zeichenfolgenwerte in einen neuen benannten Wert zu schreiben.
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
Mithilfe von WMI können Sie die Zugriffssicherheit für einen Registrierungsschlüssel nicht festlegen. Die Methode StdRegProv.CheckAccess vergleicht jedoch die Sicherheitseinstellungen des aktuellen Benutzers mit der Sicherheitsbeschreibung für einen Registrierungsschlüssel, um ermitteln, ob der Benutzer eine bestimmte Berechtigung hat, z. B. KEY_SET_VALUE.