Emissione di eliminazione di una chiave di registro
-
27-10-2019 - |
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.
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.
Altri suggerimenti
Prova a usare Registry.CurrentUser.DeleteSubKeyTree(fullSubKeyPath);
.
Dettagli qui: Registerkey.deletesubkeytree Metodo (String).