尝试删除子项树: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
。WTF?我检查并断言它确实存在?
状态更新
通过Process Monitor进行查找时,“。hdr”的子项在运行代码时会收到
ACCESS DENIED
错误。我检查了autorisations,但看起来还好吗? 最佳答案
找到了解决方案,这引起了另一个问题。
在使用Process Monitor指出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/