我正在尝试删除一个注册表项,到目前为止,我尝试了一些似乎正常的代码:
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,这就是问题所在。
答案 0 :(得分:1)
OpenSubKey
州的文档:
返回值
键入:Microsoft.Win32.RegistryKey
请求的子项,如果操作失败,则返回null。
因此打开钥匙似乎失败了。最有可能的原因是它不存在:
如果找不到指定的子项,则返回null。
在我的Win7 comp上,Image File Execution Options
子项不存在。
但即使你修好那部分,它仍然会失败。您正在使用的OpenSubKey
的重载记录为:
以只读方式检索子项。
所以你应该使用OpenSubKey(path,true)
,就像@lasseespeholt推荐的那样。
答案 1 :(得分:1)
请尝试使用Registry.CurrentUser.DeleteSubKeyTree(fullSubKeyPath);
。