Verifique a permissão do registro sem lançar exceção
Eu tenho um pedaço de código como este
<pre><code>try
{
RegistryKey regKey = Registry.LocalMachine.CreateSubKey("SOFTWARE\\xxxx\\yyyyy");
// more code
}
catch
{
}
</code></pre>
Eu não gosto do uso do bloco catch vazio. Mas, é útil porque se o usuário não tiver permissões para acessar o Registro, nada deve ser feito.
Esse código é chamado várias vezes e, além de uma prática ruim, acho que tem um desempenho ruim.
Eu tenho procurado uma maneira de verificar as permissões do registro antes de tentar acessá-lo, mas a única maneira que eu encontrei para fazer isso é verificar uma exceção com
RegistryPermission.Demand()
e verifique uma exceção. Então, isso não me dá vantagem com a abordagem inicial.
¿Existe uma maneira de verificar as permissões de acesso do Registro sem jogar artificialmente ou ter que verificar exceções?
Editar:
Bem, parece que a maneira preferida do .NET de fazer isso é tentar acessar o recurso e verificar exceções. O artigo que Yannick apontou mostra como é complexo lidar com o modelo de segurança do Windows, procurando o acesso desejado manualmente. Então, o que eu vou fazer é redesenhar este código um pouco, então ele só verifica uma vez o acesso (capturando a exceção) e mantém essa informação, em vez de constantemente lançar exceções. Isso tem a desvantagem de que, se o usuário alterar as configurações de segurança "on the fly", o código continuará negando o acesso ao Registro. No entanto, isso é preferível se não houver uma maneira simples e limpa de verificar o acesso.