Frage

Ich habe geerbt, ein altes Stück code (von grauhaarigen, meine ich warzig mit vielen undokumentierten bug-fixes als WTF-y), und es gibt einen Teil, der mir etwas Schwierigkeiten.Hier ist, wie es verbindet sich mit der remote-registry, um die Programme hinzufügen/entfernen-Taste:

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;
}

Nun, ich habe zwei Probleme:

  • Ich weiß, warum der IOException - wenn es sich um eine nicht-Windows-Maschine, es werde zu werfen.Der Unterschied zwischen UnauthorizedAccessException und SecurityException ich bin mir nicht so klar.Hat jemand irgendwelche Ideen?

  • Das gesamte Stück code, der entworfen wurde, bevor irgendjemand daran gedacht hatte, Sie vielleicht nicht verwenden Sie Ihre lokalen Anmeldung für alles.Ich kann nicht herausfinden, wie Sie die Authentifizierung für den Remote-Anschluss an die Registrierung, sowieso, und dieser code sieht aus wie es nur in einem Fall, wenn Sie können nicht erhalten diese Informationen von WMI.

Jede Hilfe mit entweder wäre toll.

War es hilfreich?

Lösung 3

John Zeiger auf MSDN beantwortet, was UnauthorizedAccessException ist - es wird nur angezeigt, wenn Sie versuchen, auf eine Schlüssel Remote, mit OpenRemoteBaseKey.

Wir sind ein wenig vorsichtig über die änderung des Sicherheitskontext auf dem computer - ich habe festgestellt, Referenz hier über die Verwendung von WMI (die wir jetzt schon für die überwiegende Mehrheit der schweres heben), um den Zugriff auf die registry, also könnte ich versuchen, dass statt.

Andere Tipps

Sie müssen wahrscheinlich die Identitätswechsel verwenden, um die Anmeldeinformationen ändern der thread ruft die remote-Registrierung-Methoden.Siehe hier (linky für einige Informationen auf der MSDN-Website.Im Grunde, dein thread hat ein security-Kontext, die verwendet wird, um managed-und unmanaged-Anrufe.

Nach MSDN, UnauthorizedAccessException ist nicht geworfen durch OpenSubKey.Also, ich denke, es wird nicht benötigt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top