RegistryKey.GetSubKeyNames возвращает имена, которых нет в этом подразделе! - PullRequest
2 голосов
/ 05 октября 2010

Это не может быть правдой, но это происходит со мной. У меня есть следующая функция:

private static bool KeyExists(RegistryKey key, string search)
{
    //GetSubKeyNames is busted...
    foreach (string subKey in key.GetSubKeyNames())
    {
        if (subKey.Trim().Equals(search.Trim()))
        {
            return true;
        }
    }
    return false;
}

Если я поставлю строку String[] names = key.GetSubKeyNames() и загляну в отладчик, я увижу, что перечисленные имена не те, что я вижу в regedit. Например, у меня установлено программное обеспечение, которое появляется в подразделе Wow6432Node, но оно появляется, если я ищу его в обычном подразделе «Программное обеспечение». Есть идеи?

Спасибо, Брайен

1 Ответ

9 голосов
/ 05 октября 2010

Ключ Wow6432 содержит ключи реестра, которые видит 32-разрядная программа.Project + Properties, вкладка Build, проверьте настройку цели вашей платформы.По умолчанию это значение x86 в VS2010.

Перенаправление реестра можно изменить, но не с помощью класса .NET RegistryKeyВы должны были бы использовать функции API реестра.Дополнительная справочная информация доступна в SDK .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...