Проверьте разрешение реестра без исключения

У меня есть такой код

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

Мне не нравится использование пустого блока catch. Но это полезно, потому что если у пользователя нет прав доступа к реестру, ничего не следует делать.

Этот фрагмент кода вызывается много раз, и, помимо плохой практики, я думаю, что он имеет низкую производительность.

Я искал способ проверить разрешения реестра, прежде чем пытаться получить к нему доступ, но единственный способ, который я нашел, это проверить исключение с помощью

RegistryPermission.Demand()

и проверьте исключение. Так что это не дает мне никакого преимущества при первоначальном подходе.

¿Есть ли способ проверить наличие разрешений на доступ к реестру без искусственного сброса или необходимости проверять исключения?

Редактировать:

Похоже, предпочтительным способом .NET является попытка получить доступ к ресурсу и проверить наличие исключений. В статье, на которую указал Янник, показано, насколько сложно справиться с моделью безопасности Windows, отыскивая нужный доступ вручную. Итак, я собираюсь немного переработать этот код, чтобы он проверял доступ только один раз (перехват исключений) и сохранял эту информацию, вместо того, чтобы постоянно выдавать исключения. Это имеет тот недостаток, что если пользователь изменяет параметры безопасности «на лету», код будет продолжать отказывать в доступе к реестру. Однако это предпочтительнее, если нет простого и понятного способа проверки доступа.

Ответы на вопрос(1)

Ваш ответ на вопрос