Выпуск удаления ключа реестра
-
27-10-2019 - |
Вопрос
Я пытаюсь удалить ключ реестра, пока я попробовал этот код, который кажется нормальным:
RegistryKey delete = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Image File Execution Options");
delete.DeleteSubKeyTree("MyPaintApp");
delete.Close();
Но я получаю ошибку:
Unhandled Exception: System.NullReferenceException: Object reference not set to an instance of an object.
Я погуглил свою проблему, искал Stackoverflow и применил некоторые решения, но, похоже, все используют тот же метод, который я использую, поэтому мне сыт по горло, и я надеюсь, что вы сможете помочь мне с этим.
РЕДАКТИРОВАТЬ: Извините, я использовал CurrentUser вместо Localmachine на моем пути реестра, это была проблема.
Решение
Документация для OpenSubKey
состояния:
Возвращаемое значение
Тип: Microsoft.win32.registryKey
Подкаушка запросила, или NULL, если операция не удалась.
Таким образом, открытие, кажется, потерпел неудачу. Скорее всего, потому что этого не существует:
Если указанный подкей не может быть найден, то NULL возвращается.
На моем Win7 Comp, Image File Execution Options
Подкей не существует.
Но даже когда вы исправляете эту часть, она все равно потерпит неудачу. Перегрузка OpenSubKey
вы используете, задокументировано как:
Получает подкки в качестве только для чтения.
Итак, вы должны использовать OpenSubKey(path,true)
, как рекомендует @lasseespeholt.
Другие советы
Пожалуйста, попробуйте использовать Registry.CurrentUser.DeleteSubKeyTree(fullSubKeyPath);
.
Подробности здесь: Registrykey.deletesubkeytree Метод (строка).