Ich habe ein altes, altes Stück Code geerbt (von hoary, ich meine warzig mit vielen undokumentierten Fehlerbehebungen als WTF-y) und es gibt einen Teil, der mir ein bisschen Ärger bereitet . Hier ist, wie es an den Remote Registry verbindet das Add zu bekommen/entfernen Programme Schlüssel:Remote-Verbindung zur Registry und Ausnahmebedingungen
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;
}
Jetzt habe ich zwei Probleme:
Ich weiß, warum die IOException - wenn es ein Nicht-Windows Maschine wird es werfen. Der Unterschied zwischen UnauthorizedAccessException und SecurityException ist mir nicht so klar. Hat jemand irgendwelche Ideen?
Dieses ganze Bit Code wurde entworfen, bevor jemand gedacht hatte, dass Sie Ihre lokale Anmeldung nicht für alles verwenden könnten. Ich kann sowieso nicht herausfinden, wie Sie die Authentifizierung für die Remoteverbindung mit der Registrierung durchführen, und dieser Code sieht so aus, als ob er nur in einem Fall verwendet wird, wenn er diese Informationen nicht von WMI abrufen kann.
Jede Hilfe mit beiden wäre toll.