2010-11-29 4 views
2

Ich habe eine C# -Anwendung, die ich schreibe, die defekte Registrierungsschlüssel in der gesamten Organisation reparieren wird. Ich versuche, die drei Klassen von RegistryKey, RegistrySecurity und RegistryAccessRule zu verwenden, und wenn ich versuche, sie zu verwenden, bekomme ich einen "angeforderten Registrierungszugriff ist nicht erlaubt.". Ich habe das umfassend gesucht und finde keine gute Lösung.Verwenden von RegistryKey, RegistrySecurity und RegistryAccessRule zum Reparieren von fehlerhaften Registrierungseinstellungen unter Windows XP

Die Schlüssel, die ich versuche zu beheben, haben keine Berechtigungen für sie (siehe Screenshot unten). Sie sind leer und haben keine vererbbaren Einstellungen. Das erlaubt mir nicht, sie mit meiner App zu beheben, da ich keine Berechtigungen habe, aber ich kann die Berechtigungen mit dem Benutzer, den ich diese Anwendung ausführe, ändern, als würde ich regedit öffnen. Also weiß ich, dass ich manuell mit diesem Benutzer Berechtigungen für defekte Maschinen hinzufügen kann, aber aus irgendeinem Grund kann meine Anwendung, egal wie schwer ich sage, sie selbst zu erhöhen, die Berechtigungen nicht erhalten.

Dinge, die ich habe versucht:

  1. auf Windows 7 funktioniert es, wenn Sie die Anwendung mit UAC laufen, oder als Administrator ausführen klicken. Ich möchte das unter Windows XP mit dem gleichen Code kopieren können.
  2. Ich habe ein Manifest mit der Ebene "highestAvailable" erstellt und auch "requireAdministrator" versucht.
  3. Ich habe auch versucht, mit "System.Security.Permissions.RegistryPermission" behaupten, die offenbar höhere Berechtigungen zu führen, als auch.
  4. Ich führe dies nicht von einer Netzwerkfreigabe aus, obwohl ich versucht habe, sowohl lokale als auch Netzwerk zu sehen, welche Sicherheitszone es von Angelegenheiten laufen würde.

können Sie sehen, was die folgenden Berechtigungen wie folgt aussehen: http://i.stack.imgur.com/0c99s.jpg

Jede Hilfe ist willkommen!

Antwort

0

Sie könnten versuchen, ein Administrator-Konto aus dem Code Identitätswechsel, P mit/Invoke die notwendigen api zu nennen, wie diese Person ein Konto Identitätswechsel-Klasse erstellen tat:

Impersonator Class c#