Проверьте разрешение реестра без исключения
У меня есть такой код
<pre><code>try
{
RegistryKey regKey = Registry.LocalMachine.CreateSubKey("SOFTWARE\\xxxx\\yyyyy");
// more code
}
catch
{
}
</code></pre>
Я неТ не нравится использование пустого блока catch. Но это'полезно, потому что если пользователь неУ него нет прав доступа к реестру, ничего не нужно делать.
Этот фрагмент кода вызывается много раз, и, помимо плохой практики, я думаю, что он имеет низкую производительность.
я искал способ проверить разрешения реестра, прежде чем пытаться получить к нему доступ, но единственный способ, которым ямы нашли, чтобы сделать этопроверка на исключение с
RegistryPermission.Demand()
и проверьте исключение. Так что это не дает мне никакого преимущества при первоначальном подходе ».
Есть ли способ проверить наличие разрешений на доступ к реестру без искусственного сброса или проверки исключений?
Редактировать:
Похоже, предпочтительным способом .NET является попытка получить доступ к ресурсу и проверить наличие исключений. В статье, на которую указал Янник, показано, насколько сложно справиться с моделью безопасности Windows, отыскивая нужный доступ вручную. Итак, что яЯ собираюсь немного изменить этот код, чтобы он только один раз проверял доступ (перехватывает исключение) и сохранял эту информацию, вместо того, чтобы постоянно выдавать исключения. Это имеет тот недостаток, что если пользователь изменяет настройки безопасности »на лету"код будет продолжать запрещать доступ к реестру. Тем не менее, это предпочтительнее, если нетt простой и понятный способ проверки доступа.