Verifique los permisos de registro sin lanzar excepción.

Tengo un trozo de código como este

<pre><code>try { RegistryKey regKey = Registry.LocalMachine.CreateSubKey("SOFTWARE\\xxxx\\yyyyy"); // more code } catch { } </code></pre>

No me gusta el uso del bloque catch vacío. Pero es útil porque si el usuario no tiene permisos para acceder al Registro, no se debe hacer nada.

Esta pieza de código se llama muchas veces y, aparte de una mala práctica, creo que tiene un bajo rendimiento.

He estado buscando una forma de verificar los permisos del registro antes de intentar acceder a él, pero la única forma que encontré para hacerlo es verificar una excepción con

RegistryPermission.Demand()

y buscar una excepción. Entonces, eso no me da ninguna ventaja con el enfoque inicial.

¿Hay alguna forma de verificar los permisos de acceso al Registro sin tener que lanzar artificialmente o tener que verificar las excepciones?

Editar:

Bueno, parece que la forma preferida de .NET de hacer esto es intentar acceder al recurso y verificar las excepciones. El artículo señalado por Yannick muestra lo complejo que es lidiar con el modelo de seguridad de Windows, buscando el acceso deseado manualmente. Entonces, lo que voy a hacer es rediseñar este código un poco, de modo que solo compruebe el acceso una vez (detecte la excepción) y mantenga esa información, en lugar de lanzar constantemente excepciones. Esto tiene el inconveniente de que si el usuario cambia la configuración de seguridad "sobre la marcha", el código seguirá denegando el acceso al Registro. Sin embargo, esto es preferible si no hay una forma simple y limpia de verificar el acceso.

Respuestas a la pregunta(1)

Su respuesta a la pregunta