Поиск расширенных ключей regedit

Ключ, который я хочу сейчас, - это ключ DeviceDesc для графического процессора, но кажется, что каждый путь regedit к ключу уникален, например:

Computer\HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\PCI\VEN_10DE&DEV_1C03&SUBSYS_85B61043&REV_A1\4&1c3d25bb&0&0019

Это не похоже на путь, по которому идет каждый.

Образ

1 ответ

Решение

Согласно документации Microsoft:

Дерево реестра HKLM\SYSTEM\CurrentControlSet\Enum содержит информацию об устройствах в системе. PnP-менеджер создает подраздел для каждого устройства с именем в виде HKLM\SYSTEM\CurrentControlSet\Enum\Enumerator\deviceID. Под каждым из этих ключей находится подраздел для каждого экземпляра устройства, присутствующего в системе. Этот подраздел содержит такую ​​информацию, как описание устройства, идентификаторы оборудования, совместимые идентификаторы и требования к ресурсам.

Дерево Enum зарезервировано для использования компонентами операционной системы, и его структура может быть изменена. Драйверы и компоненты установки устройства в пользовательском режиме должны использовать системные функции, такие как IoGetDeviceProperty и SetupDiGetDeviceRegistryProperty, для извлечения информации из этого дерева. Драйверы и приложения Windows не должны иметь прямого доступа к дереву Enum. Вы можете просмотреть дерево Enum напрямую, используя редактор реестра при отладке драйверов.

Источник: https://docs.microsoft.com/en-us/windows-hardware/drivers/install/hklm-system-currentcontrolset-enum-registry-tree

Вы можете искать ключи следующим образом:

RegistryKey OurKey = Registry.LocalMachine;
OurKey = OurKey.OpenSubKey(@"HKLM\SYSTEM\CurrentControlSet\Enum", true);

foreach (string Keyname in OurKey.GetSubKeyNames())
{
    RegistryKey key = OurKey.OpenSubKey(Keyname);

    MessageBox.Show(key.GetValue("KEY_NAME").ToString()); // Replace KEY_NAME with what you're looking for
} 
Другие вопросы по тегам