经过更多的实验,我能够通过单独删除所有值然后删除子键来执行任务。这是一个递归例程:
/// <summary>
/// Deletes all the values and subkeys of a particular key.
/// </summary>
/// <param name="key"></param>
private static void DeleteRegistrySubStructure(RegistryKey key)
{
// First, traverse the subkeys to delete the underlying values and subkeys.
String[] subKeys = key.GetSubKeyNames();
foreach (var subKeyName in subKeys)
{
RegistryKey subKey = key.OpenSubKey(subKeyName, true);
DeleteRegistrySubStructure(subKey);
subKey.Close();
key.DeleteSubKey(subKeyName);
}
// At this point, all the subkeys (and their values) have been
// deleted. So, delete the values for the key for final clean up.
string[] valueNames = key.GetValueNames();
foreach (string name in valueNames)
{
key.DeleteValue(name);
}
}