删除注册表项时出现问题

时间:2012-02-18 18:20:03

标签: c# .net registry registrykey

我正在尝试删除一个注册表项,到目前为止,我尝试了一些似乎正常的代码:

        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并应用了一些解决方案,但似乎都使用了我使用的相同方法,所以我厌倦了,我希望你可以帮助我。

编辑:抱歉我在我的registryKey路径中使用了CurrentUser而不是LocalMachine,这就是问题所在。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

请尝试使用Registry.CurrentUser.DeleteSubKeyTree(fullSubKeyPath);

此处的详细信息:RegistryKey.DeleteSubKeyTree Method (String)