Frage

Ich versuche, einen Registrierungsschlüssel zu löschen. Bisher habe ich diesen Code ausprobiert, der normal zu sein scheint:

        RegistryKey delete = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Image File Execution Options");
        delete.DeleteSubKeyTree("MyPaintApp");
        delete.Close();

Aber ich bekomme den Fehler:

Unhandled Exception: System.NullReferenceException: Object reference not set to an instance of an object.

Ich habe mein Problem gegoogelt und Stackoverflow gesucht und einige Lösungen angewendet, aber alle scheinen die gleiche Methode zu verwenden, die ich verwende. Ich habe es satt und ich hoffe, Sie können mir dabei helfen.

EDIT: Entschuldigung, ich habe Currentuser anstelle von Local -Machine in meinem RegistryKey -Pfad verwendet, das war das Problem.

War es hilfreich?

Lösung

Die Dokumentation für OpenSubKey Zustände:

Rückgabewert
Typ: microsoft.win32.registryKey
Der angeforderte Unterschlüssel oder Null, wenn der Betrieb fehlschlägt.

So scheint das Öffnen des Schlüssels gescheitert zu sein. Höchstwahrscheinlich, weil es nicht existiert:

Wenn der angegebene Unterschlüssel nicht gefunden werden kann, wird Null zurückgegeben.

Auf meinem Win7 Comp, die Image File Execution Options Subty existiert nicht.


Aber selbst wenn Sie diesen Teil beheben, wird es immer noch scheitern. Die Überlastung von OpenSubKey Sie verwenden dokumentiert als:

Ruft einen Unterschlüssel als schreibgeschützt ab.

Sie sollten also verwenden OpenSubKey(path,true), wie @lassesespeholt empfiehlt.

http://msdn.microsoft.com/en-us/library/z9f66s0a.aspx

Andere Tipps

Bitte versuchen Sie es zu verwenden Registry.CurrentUser.DeleteSubKeyTree(fullSubKeyPath);.

Details hier: RegistryKey.DeletesubkeyTree -Methode (String).

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