Compartilhar via


Alterar dados de Registro

A classe StdRegProv do Provedor de Registro do Sistema tem métodos que fazem o seguinte:

  • Criar ou excluir chaves do Registro.

    Use CreateKey ou DeleteKey.

  • Crie ou exclua valores nomeados, que são chamados de entradas quando estão sob chaves.

    Use o nome de um novo valor e SetBinaryValue, SetDWORDValue, SetExpandedStringValue, SetMultiStringValue ou SetStringValue para criar um valor nomeado. Use DeleteValue para excluir um valor nomeado.

  • Altere os valores nomeados.

    Use o nome de um valor e os métodos Set (identificados no item do marcador anterior) para alterar os valores nomeados existentes em uma chave. Você deve saber o nome de um valor para alterá-lo. Se você não souber os nomes de valor em uma chave, use o método EnumValues para obter os nomes.

As seguintes seções serão abordadas neste tópico:

Criar uma chave do Registro usando o VBScript

Como o Registro é o banco de dados de configuração central do sistema operacional, de aplicativos e de serviços, tenha cuidado ao gravar alterações nos valores do Registro ou excluir chaves.

Observação

Não é possível monitorar a subchave HKEY_CLASSES_ROOT da HKEY_CURRENT_USER(HKCU). O monitoramento HKEY_USERS não é recomendado porque as subchaves aparecem e desaparecem à medida que os hives são carregados.

 

Os exemplos de código a seguir mostram como criar uma chave do Registro e uma subchave.

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)

Criar um valor de Registro nomeado usando o PowerShell e o VBScript

O exemplo de código a seguir mostra como criar um valor nomeado chamado MultiStringValue na chave HKEY_LOCAL_MACHINE\SOFTWARE\MyKey\MySubKey que o script anterior cria. O script chama StdRegProv.SetMultiStringValue para gravar valores de cadeia de caracteres em um novo valor nomeado.

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

Com o WMI, você não pode definir a segurança de acesso em uma chave do Registro. No entanto, o método StdRegProv.CheckAccess compara as configurações de segurança do usuário atual com o descritor de segurança em uma chave do Registro para determinar se o usuário tem uma permissão específica, como KEY_SET_VALUE.