删除注册表项时出现问题

本文关键字:问题 注册表 删除 | 更新日期: 2023-09-27 18:24:59

我正在尝试删除注册表项,到目前为止,我尝试了看起来很正常的代码:

        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,这就是问题所在。

删除注册表项时出现问题

OpenSubKey的文档说明:

返回值
类型:Microsoft.Win32.RegistryKey
请求的子密钥,如果操作失败,则为null。

因此,打开钥匙似乎失败了。很可能是因为它不存在:

如果找不到指定的子密钥,则返回null。

在我的Win7计算机上,Image File Execution Options子密钥不存在。


但即使你修复了那个部分,它仍然会失败。您正在使用的OpenSubKey过载记录为:

以只读方式检索子键。

因此,您应该使用OpenSubKey(path,true),就像@lassespeholt建议的那样。

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

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

此处的详细信息:RegistryKey.DeleteSubKeyTree方法(字符串)。