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.

questionAnswers(1)

yourAnswerToTheQuestion