Direitos de segurança e acesso de chave do Registro

O modelo de segurança do Windows permite controlar o acesso às chaves do Registro. Para obter mais informações sobre segurança, consulte Modelo de controle de acesso.

Você pode especificar um descritor de segurança para uma chave do Registro ao chamar a função RegCreateKeyEx ou RegSetKeySecurity . Se você especificar NULL, a chave obterá um descritor de segurança padrão. As ACLs em um descritor de segurança padrão para uma chave são herdadas de sua chave pai direta.

Para obter o descritor de segurança de uma chave do Registro, chame a função RegGetKeySecurity, GetNamedSecurityInfo ou GetSecurityInfo .

Os direitos de acesso válidos para chaves do Registro incluem os direitos de acesso padrão DELETE, READ_CONTROL, WRITE_DAC e WRITE_OWNER. As chaves do Registro não dão suporte ao direito de acesso padrão SYNCHRONIZE.

A tabela a seguir lista os direitos de acesso específicos para objetos de chave do Registro.

Valor Significado
KEY_ALL_ACCESS (0xF003F)
Combina os direitos de acesso STANDARD_RIGHTS_REQUIRED, KEY_QUERY_VALUE, KEY_SET_VALUE, KEY_CREATE_SUB_KEY, KEY_ENUMERATE_SUB_KEYS, KEY_NOTIFY e KEY_CREATE_LINK.
KEY_CREATE_LINK (0x0020)
Reservado para uso do sistema.
KEY_CREATE_SUB_KEY (0x0004)
Necessário para criar uma subchave de uma chave do Registro.
KEY_ENUMERATE_SUB_KEYS (0x0008)
Necessário para enumerar as subchaves de uma chave do Registro.
KEY_EXECUTE (0x20019)
Equivalente a KEY_READ.
KEY_NOTIFY (0x0010)
Necessário para solicitar notificações de alteração para uma chave do Registro ou para subchaves de uma chave do Registro.
KEY_QUERY_VALUE (0x0001)
Necessário para consultar os valores de uma chave do Registro.
KEY_READ (0x20019)
Combina os valores STANDARD_RIGHTS_READ, KEY_QUERY_VALUE, KEY_ENUMERATE_SUB_KEYS e KEY_NOTIFY.
KEY_SET_VALUE (0x0002)
Necessário para criar, excluir ou definir um valor do Registro.
KEY_WOW64_32KEY (0x0200)
Indica que um aplicativo no Windows de 64 bits deve operar na exibição do Registro de 32 bits. Esse sinalizador é ignorado pelo Windows de 32 bits. Para obter mais informações, consulte Acessando uma exibição alternativa do Registro.
Esse sinalizador deve ser combinado usando o operador OR com os outros sinalizadores nesta tabela que consultam ou acessam valores do Registro.
Windows 2000: Não há suporte para esse sinalizador.
KEY_WOW64_64KEY (0x0100)
Indica que um aplicativo no Windows de 64 bits deve operar na exibição do Registro de 64 bits. Esse sinalizador é ignorado pelo Windows de 32 bits. Para obter mais informações, consulte Acessando uma exibição alternativa do Registro.
Esse sinalizador deve ser combinado usando o operador OR com os outros sinalizadores nesta tabela que consultam ou acessam valores do Registro.
Windows 2000: Não há suporte para esse sinalizador.
KEY_WRITE (0x20006)
Combina os direitos de acesso STANDARD_RIGHTS_WRITE, KEY_SET_VALUE e KEY_CREATE_SUB_KEY.

Quando você chama a função RegOpenKeyEx , o sistema verifica os direitos de acesso solicitados no descritor de segurança da chave. Se o usuário não tiver o acesso correto à chave do Registro, a operação aberta falhará. Se um administrador precisar de acesso à chave, a solução será habilitar o privilégio SE_TAKE_OWNERSHIP_NAME e abrir a chave do Registro com acesso WRITE_OWNER. Para obter mais informações, consulte Habilitando e desabilitando privilégios.

Você pode solicitar o direito de acesso ACCESS_SYSTEM_SECURITY a uma chave do Registro se quiser ler ou gravar a SACL (lista de controle de acesso do sistema) da chave. Para obter mais informações, consulte ACLs (Listas de Controle de Acesso) e Direito de Acesso à SACL.

Para exibir os direitos de acesso atuais de uma chave, incluindo as chaves predefinidas, use o Editor do Registro (Regedt32.exe). Depois de navegar até a chave desejada, vá para o menu Editar e selecione Permissões.