c # - GetSubKeyNames получает исключение «System.IO.IOException: больше нет доступных данных». - PullRequest
0 голосов
/ 07 ноября 2018

Я пытаюсь удалить несколько ключей реестра в случае, если программа не удаляется правильно.

Я компилирую свою программу с использованием любого процессора и запускаю программу в Windows 10 Pro (64-разрядная версия).

Я получаю следующее исключение:

System.IO.IOException: No more data is available.
    at Microsoft.Win32.RegistryKey.Win32Error(Int32 errorCode, String str)
    at Microsoft.Win32.RegistryKey.InternalGetSubKeyNames()
    at Microsoft.Win32.RegistryKey.GetSubKeyNames()
    at ...

когда я запускаю следующий код:

string[] items_list = new[]
{
    "string1",
    "string2",
    "string3"
    // ...
};

foreach (string subKeyName in Registry.ClassesRoot.GetSubKeyNames())
{
    if (items_list.Any(item => subKeyName.StartsWith(item)))
    {
        DeleteSubKeyTree(Registry.ClassesRoot, subKeyName);
    }
}

void DeleteSubKeyTree(RegistryKey regKey, string subKey)  
{
    try
    {
        regKey.DeleteSubKeyTree(subKey);
        WriteToLog($@"Deleting sub key {subKey} from {regKey.Name}.");
    }
    catch (Exception ex)
    {
        WriteToLog(ex.Message);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...