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

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

4

2 回答 2

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

于 2012-02-18T18:25:03.090 回答
1

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

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

于 2012-02-18T18:40:33.183 回答