J'ai un morceau de code comme celui-ciVérifier l'autorisation d'enregistrement sans jeter exception
try
{
RegistryKey regKey = Registry.LocalMachine.CreateSubKey("SOFTWARE\\xxxx\\yyyyy");
// more code
}
catch
{
}
Je n'aime pas l'utilisation du bloc catch vide. Mais, c'est utile parce que si l'utilisateur n'a pas les permissions pour accéder au registre, rien ne devrait être fait. Cette pièce de code est appelée plusieurs fois et, à part une mauvaise pratique, je pense qu'elle a de mauvaises performances.
Je cherchais un moyen de vérifier les autorisations de registre avant d'essayer d'y accéder, mais la seule façon que j'ai trouvé de le faire, il est de vérifier une exception avec
RegistryPermission.Demand()
et vérifier une exception. Donc, cela ne me donne aucun avantage avec l'approche initiale.
¿Y at-il un moyen de vérifier les autorisations d'accès au registre sans lancer artificiellement ou avoir à vérifier les exceptions?
Edit:
Eh bien, ressemble à la façon préférée .NET de faire cela tente d'accéder à la ressource et vérifier les exceptions. L'article pointé par Yannick montre à quel point il est complexe de traiter le modèle de sécurité de Windows, en cherchant l'accès désiré manuellement. Donc, ce que je vais faire est de reconcevoir un peu ce code afin qu'il ne vérifie qu'une seule fois l'accès (attraper l'exception) et conserve cette information, au lieu de lancer constamment des exceptions. Cela a l'inconvénient que si l'utilisateur change les paramètres de sécurité "à la volée", le code continuera à refuser l'accès au Registre. Cependant, ceci est préférable s'il n'y a pas un moyen simple et propre de vérifier l'accès.
Non , J'utilise CreateSubKey pour ouvrir une sous-clé, pas pour le créer. Si la sous-clé demandée existe déjà, la fonction l'ouvre. –