.net - .NET 中的注册表 : DeleteSubKeyTree says the subkey does not exists, 但是,嘿,确实如此!

标签 .net exception registry

尝试删除子项树:HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.hdr.hdr 子项有一个子项,没有值。所以我使用这段代码:

RegistryKey FileExts = Registry.CurrentUser.CreateSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\FileExts");
RegistryKey faulty = FileExts.OpenSubKey(".hdr");
Debug.Assert (faulty != null && faulty.SubKeyCount != 0);
faulty.Close();
FileExts.DeleteSubKeyTree(".hdr");

我得到了 ArgumentException ,其中包含消息“无法删除子项树,因为子项不存在。”

什么鬼?我检查并断言它确实存在?

状态更新

使用进程监视器查找,“.hdr”子项在运行代码时出现ACCESS DENIED错误。我检查了授权,但它们看起来不错?

最佳答案

找到了一个解决方案,这又引发了另一个问题......

在使用进程监视器指出ACCESS DENIED错误后,我只是尝试单独删除子项:

RegistryKey hdr = FileExts.OpenSubKey(".hdr", true);
foreach (String key in hdr.GetSubKeyNames())
   hdr.DeleteSubKey(key);
hdr.Close();
FileExts.DeleteSubKeyTree(".hdr");

一切正常,所以这不是权限问题!

由于我不明白的原因,DeleteSubKeyTree 需要一个空树才能工作。

解释一下,有人吗?

关于.net - .NET 中的注册表 : DeleteSubKeyTree says the subkey does not exists, 但是,嘿,确实如此!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2959419/

相关文章:

c# - 在 TFS 中多次 checkin 后获取特定变更集

c# - Asp.NET Web API "The operation was canceled."异常

JavaMail 一段时间后停止发送邮件

c# - 从注册表中读取字符串值会产生一些垃圾字符

delphi - 为什么RegSetValueEx只添加半个字符串?

.net - 为什么 .NET "application settings"没有存储在注册表中?

.net - 如何在 Windows 窗体中模仿 JavaScript 的 onBlur 事件?

c# - 使用 .Net 在计时器上运行 Func<T>

.net - .NET 中的神经网络示例

java - 使用私有(private) setter 或在构造函数中工作