J'ai hérité d'un vieux morceau de code (je veux dire warty avec beaucoup de corrections de bogues non documentées par rapport à WTF-y) et il y a une partie qui me pose un problème . Voilà comment il se connecte au Registre à distance pour obtenir l'ajout/suppression de programmes clés:Connexion à un registre à distance, et obtention d'exceptions
try
{
remoteKey = RegistryKey.OpenRemoteBaseKey(
RegistryHive.LocalMachine, addr.Value).OpenSubKey(
"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall");
return 1;
}
catch (IOException e)
{
IOException myexception = e;
//Console.WriteLine("{0}: {1}: {2}",
// e.GetType().Name, e.Message, addr.Value);
return 2;
}
catch (UnauthorizedAccessException e)
{
UnauthorizedAccessException myexception = e;
//Console.WriteLine("{0}: {1}: {2}",
// e.GetType().Name, e.Message, addr.Value);
return 3;
}
catch (System.Security.SecurityException e)
{
System.Security.SecurityException myexception = e;
//Console.WriteLine("{0}: {1}: {2}",
// e.GetType().Name, e.Message, addr.Value);
return 4;
}
Maintenant, j'ai deux problèmes:
Je sais pourquoi le IOException - si c'est un non-Windows la machine ça va jeter ça. La différence entre UnauthorizedAccessException et SecurityException n'est pas si claire. Quelqu'un a une idée?
Tout ce code a été conçu avant que quiconque ne pense que vous ne pourriez pas utiliser votre connexion locale pour tout. Je ne peux pas savoir comment vous faites l'authentification pour vous connecter à distance au registre, et ce code semble être utilisé seulement dans un cas, quand il ne peut pas obtenir cette information de WMI.
Toute aide avec l'un ou l'autre serait génial.