Domanda

Sto cercando di eliminare una chiave di registro, finora ho provato quel codice che sembra essere normale:

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

Ma ricevo l'errore:

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

Ho cercato su Google il mio problema e ho cercato StackOverflow e ho applicato alcune soluzioni, ma sembrano tutti usare lo stesso metodo che sto usando, quindi sono stufo e spero che tu possa aiutarmi in questo.

EDIT: scusa se ho usato CurrentUser invece di LocalMachine nel mio percorso di registryKey, quello era il problema.

È stato utile?

Soluzione

La documentazione per OpenSubKey stati:

Valore di ritorno
Tipo: Microsoft.Win32.RegistryKey
Il subkey ha richiesto o null se l'operazione non è riuscita.

Aprire così la chiave sembra aver fallito. molto probabilmente perché non esiste:

Se non è possibile trovare il sottosuolo specificato, viene restituito null.

Sul mio win7 comp, il Image File Execution Options Il subkey non esiste.


Ma anche quando fissi quella parte, fallirà comunque. Il sovraccarico di OpenSubKey stai usando è documentato come:

Recupera un sottosuolo in sola lettura.

Quindi dovresti usare OpenSubKey(path,true), come consiglia @LasseSpeHolt.

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

Altri suggerimenti

Prova a usare Registry.CurrentUser.DeleteSubKeyTree(fullSubKeyPath);.

Dettagli qui: Registerkey.deletesubkeytree Metodo (String).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top