删除注册表项时出现问题
本文关键字:问题 注册表 删除 | 更新日期: 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方法(字符串)。