2012-02-18 96 views
0

我试图删除注册表项,到目前为止,我试过了代码,这似乎是正常的:问题删除注册表项

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

编辑:SORRY我使用CurrentUser而不是LocalMachine在我的registryKey路径,这是问题。

+1

'delete' null?抛出一个断言,或使用调试器。 – CodesInChaos 2012-02-18 18:23:16

+0

除了当前的null异常,您应该在修改密钥时使用'OpenSubKey(key,true)'。 http://msdn.microsoft.com/en-us/library/xthy8s8d.aspx – 2012-02-18 18:24:29

+0

为什么在问一个问题之前,你只是阅读你正在使用的函数的文档? – CodesInChaos 2012-02-18 18:30:29

回答

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