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

10-13 09:11