Проблема удаления раздела реестра - PullRequest
0 голосов
/ 18 февраля 2012

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

        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 в моем пути registryKey, это была проблема.

Ответы [ 2 ]

1 голос
/ 18 февраля 2012

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

Подробности здесь: RegistryKey.DeleteSubKeyTree Method (String) .

1 голос
/ 18 февраля 2012

В документации для OpenSubKey указано:

Возвращаемое значениеТип: Microsoft.Win32.RegistryKeyПодраздел запрошен, или ноль, если операция не удалась.

Таким образом, открытие ключа не удалось.скорее всего потому, что он не существует:

Если указанный подраздел не может быть найден, возвращается ноль.

В моем Win7-компе подключ Image File Execution Options подключне существует.


Но даже если вы исправите эту часть, она все равно потерпит неудачу.Перегрузка OpenSubKey, которую вы используете, задокументирована как:

Извлекает подраздел как доступный только для чтения.

Таким образом, вы должны использовать OpenSubKey(path,true), например @lasseespeholtрекомендует.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...