Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Класс поставщика системного реестраStdRegProv для WMI имеет методы, которые выполняют следующие действия:
Создание или удаление разделов реестра.
Создайте или удалите именованные значения, которые называются записями, когда они находятся под ключами.
Используйте имя нового значения и SetBinaryValue, SetDWORDValue, SetExpandedStringValue, SetMultiStringValueили SetStringValue для создания именованного значения. Используйте DeleteValue для удаления именованного значения.
Измените именованные значения.
Используйте имя значения и методы Set (из предыдущего пункта), чтобы изменить существующие именованные значения в пределах ключа. Необходимо знать имя значения, чтобы изменить его. Если имена значений под ключом не известны, используйте метод EnumValues для получения имен.
В этом разделе рассматриваются следующие разделы:
- Создание ключа реестра с помощью VBScript
- Создание именованного значения реестра с помощью PowerShell и VBScript
Создание раздела реестра с помощью VBScript
Так как реестр — это центральная база данных конфигурации для операционной системы, приложений и служб, используйте осторожность при записи изменений в значения реестра или удаления ключей.
Заметка
Невозможно отслеживать подраздел HKEY_CLASSES_ROOT в HKEY_CURRENT_USER (HKCU). Мониторинг HKEY_USERS не рекомендуется, так как вложенные ключи отображаются и исчезают по мере загрузки кустов.
В следующих примерах кода показано, как создать новый раздел реестра и подраздел.
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 и VBScript
В следующем примере кода показано, как создать именованное значение с именем MultiStringValue в разделе HKEY_LOCAL_MACHINE\SOFTWARE\MyKey\MySubKey ключ, который создает предыдущий скрипт. Скрипт вызывает StdRegProv.SetMultiStringValue для записи строковых значений в новое именованное значение.
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 невозможно задать безопасность доступа в разделе реестра. Однако метод StdRegProv.CheckAccess сравнивает параметры безопасности текущего пользователя с дескриптором безопасности в разделе реестра, чтобы определить, имеет ли пользователь определенное разрешение, например KEY_SET_VALUE.