Вопрос

Я пытаюсь удалить ключ реестра, пока я попробовал этот код, который кажется нормальным:

        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.

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

Другие советы

Пожалуйста, попробуйте использовать Registry.CurrentUser.DeleteSubKeyTree(fullSubKeyPath);.

Подробности здесь: Registrykey.deletesubkeytree Метод (строка).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top