尝试删除子项树: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/