Überprüfen Sie die Registrierungsberechtigung, ohne eine Ausnahme auszulösen
Ich habe einen Code wie diesen
<pre><code>try
{
RegistryKey regKey = Registry.LocalMachine.CreateSubKey("SOFTWARE\\xxxx\\yyyyy");
// more code
}
catch
{
}
</code></pre>
Ich mag die Verwendung des leeren Catch-Blocks nicht. Dies ist jedoch hilfreich, da nichts unternommen werden sollte, wenn der Benutzer keine Zugriffsberechtigung für die Registrierung hat.
Dieser Code wird oft aufgerufen, und abgesehen von einer schlechten Vorgehensweise hat er meiner Meinung nach eine schlechte Leistung.
Ich habe nach einer Möglichkeit gesucht, die Registrierungsberechtigungen zu überprüfen, bevor ich versucht habe, darauf zuzugreifen, aber die einzige Möglichkeit, die ich gefunden habe, besteht darin, nach einer Ausnahme mit zu suchen
RegistryPermission.Demand()
und auf eine Ausnahme prüfen. Das bringt mir also keinen Vorteil bei der anfänglichen Herangehensweise.
¿Gibt es eine Möglichkeit, nach Registrierungszugriffsberechtigungen zu suchen, ohne künstlich Ausnahmen auszulösen oder nach Ausnahmen suchen zu müssen?
Bearbeiten:
Nun, es sieht so aus, als würde .NET bevorzugt versuchen, auf die Ressource zuzugreifen und nach Ausnahmen zu suchen. Der Artikel, auf den Yannick hingewiesen hat, zeigt, wie komplex es ist, mit dem Windows-Sicherheitsmodell umzugehen und manuell nach dem gewünschten Zugriff zu suchen. Also, was ich tun werde, ist, diesen Code ein wenig umzugestalten, damit er nur einmal nach dem Zugriff sucht (die Ausnahme abfängt) und diese Informationen behält, anstatt ständig Ausnahmen auszulösen. Dies hat den Nachteil, dass der Code weiterhin den Zugriff auf die Registrierung verweigert, wenn der Benutzer die Sicherheitseinstellungen "on the fly" ändert. Dies ist jedoch vorzuziehen, wenn es keine einfache und saubere Methode zur Überprüfung des Zugriffs gibt.