Sprawdź uprawnienia rejestru bez wyrzucania wyjątku
Mam taki fragment kodu
<pre><code>try
{
RegistryKey regKey = Registry.LocalMachine.CreateSubKey("SOFTWARE\\xxxx\\yyyyy");
// more code
}
catch
{
}
</code></pre>
Nie podoba mi się użycie pustego bloku catch. Ale jest to przydatne, ponieważ jeśli użytkownik nie ma uprawnień dostępu do Rejestru, nic nie powinno być zrobione.
Ten fragment kodu jest wywoływany wiele razy i, poza złą praktyką, myślę, że ma słabą wydajność.
Szukałem sposobu na sprawdzenie uprawnień rejestru przed próbą uzyskania dostępu do niego, ale jedyny sposób, w jaki to zrobiłem, to sprawdzenie wyjątku za pomocą
RegistryPermission.Demand()
i sprawdź wyjątek. To nie daje mi przewagi w początkowym podejściu.
Czy istnieje sposób na sprawdzenie uprawnień dostępu do Rejestru bez sztucznego rzucania lub sprawdzania wyjątków?
Edytować:
Wygląda na to, że preferowanym sposobem .NET jest uzyskanie dostępu do zasobu i sprawdzenie wyjątków. Artykuł, który Yannick wskazał, pokazuje, jak skomplikowane jest radzenie sobie z modelem bezpieczeństwa Windows, szukając żądanego dostępu ręcznie. Więc zamierzam trochę przeprojektować ten kod, aby sprawdzał tylko raz dostęp (przechwytując wyjątek) i przechowuje te informacje, zamiast ciągle rzucać wyjątki. Ma to tę wadę, że jeśli użytkownik zmieni ustawienia bezpieczeństwa „w locie”, kod będzie odmawiał dostępu do Rejestru. Jest to jednak preferowane, jeśli nie ma prostego i czystego sposobu sprawdzania dostępu.