.NET 中的注册表:DeleteSubKeyTree 表示子项不存在,但是嘿,它确实存在!

2023-11-27

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

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 需要一个空树才能工作。

解释一下,有人吗?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

.NET 中的注册表:DeleteSubKeyTree 表示子项不存在,但是嘿,它确实存在! 的相关文章

随机推荐