Acessando chaves do Registro com segurança

Os problemas do cliente têm sido frequentemente rastreados para componentes externos, como aplicativos de instalação de dispositivo de terceiros, que fazem o seguinte:

  • Exclua chaves críticas do Registro.

  • Modifique as permissões de acesso de chaves críticas do Registro.

Muitos dos problemas vistos com componentes externos são causados pelo uso da permissão de acesso KEY_ALL_ACCESS para chaves do Registro. A partir do Windows Server 2003, SetupDiCreateDevRegKey concede apenas permissões de acesso KEY_READ e KEY_WRITE e não KEY_ALL_ACCESS. A partir do Windows Vista, restrições de KEY_ALL_ACCESS adicionais são impostas.

Siga estas diretrizes para acessar com segurança as chaves do Registro:

  • Use apenas a SetupAPI, as funções do gerenciador de configurações e outras APIs relacionadas ao dispositivo com suporte para abrir chaves do registro de dispositivo, especialmente as chaves de hardware e as chaves de software de um dispositivo.

    Essas funções abordam problemas comuns resultantes de restrições nas permissões de acesso.

  • O local e o formato das chaves do Registro podem ser alterados entre diferentes versões do Windows. Não faça suposições sobre o local, o formato ou o significado das chaves do Registro ou dos valores usados para a instalação do dispositivo e do driver.

    Para obter mais informações sobre chaves e árvores do Registro, consulte Árvores e chaves do Registro para dispositivos e drivers.

  • Não use o Registro para acessar ou modificar diretamente as configurações internas do dispositivo.

  • Solicite apenas as permissões de acesso mínimas necessárias para cada tarefa, como as seguintes:

    • KEY_SET_VALUE

    • KEY_CREATE_SUB_KEY

    • KEY_QUERY_VALUE

    • KEY_ENUMERATE_SUB_KEYS

  • Não abra diretamente as chaves de classe de configuração do dispositivo no registro. Assim como acontece com qualquer chave do Registro, o local e o nome das chaves de classe de instalação do dispositivo podem ser alterados entre as versões do Windows. Para obter informações sobre como acessar corretamente uma chave de classe de configuração de dispositivo, consulte Abrindo chaves do Registro para uma classe de configuração de dispositivo

  • Não abra diretamente as chaves de classe da interface do dispositivo no registro. Assim como acontece com qualquer chave do Registro, o local e o nome das chaves de classe da interface do dispositivo podem ser alterados entre as versões do Windows.

    Para abrir chaves de classe de interface do dispositivo com segurança, use CM_Open_Class_Key com a configuração CM_OPEN_CLASS_KEY_INTERFACE no parâmetro ulFlags ou use SetupDiOpenClassRegKeyEx e defina DIOCR_INSTALLER no parâmetro Flags .

  • Use apenas diretivas INF para modificar as chaves do Registro reservadas para uso pelo sistema operacional. Para obter mais informações, consulte Resumo das diretivas INF.

  • Instaladores de classe e co-instaladores não podem chamar funções do Registro para criar, alterar ou excluir valores do Registro reservados para uso pelo sistema operacional.

Para obter mais informações sobre as permissões de acesso de chaves do Registro, consulte Segurança de Chave do Registro e Direitos de Acesso.