@a63826ndrew
Студент, новичок в Python

Где взять системные ключи на определенные необходимые группы устройств?

Здравствуйте!
Я делаю программу наподобие диспетчера устройств из Windows 10, и в процессе разработки возникла такая проблема, что не на все пункты оттуда я смог найти найти системные ключи, посмотрев информацию о них через Aida64 я сделал вывод что необходимые мне системные ключи это конкретные драйвера или группы драйверов, объединенные каким-то параметром, и вот я хотел бы узнать что с этим можно сделать.
Форма у меня представляет собой listview, куда выводятся данные, и toolStripComboBox для выбора раздела, информацию о котором мы хотим получить.
Что касаемо кода то в нем реализован метод для получения информации по ключу:
private void GetHardWareInfo(string key, ListView list)
        {
            list.Items.Clear();
            ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM " + key);
            try
            {
                foreach (ManagementObject obj in searcher.Get())
                {
                    ListViewGroup listViewGroup = new ListViewGroup();
                    try
                    {
                        listViewGroup = list.Groups.Add(obj["Name"].ToString(), obj["Name"].ToString());
                    }
                    catch (Exception ex)
                    {
                        listViewGroup = list.Groups.Add(obj.ToString(), obj.ToString());
                    }
                
                    if (obj.Properties.Count == 0)
                    {
                        MessageBox.Show("Информация не была получена!");
                        return;
                    }

                    foreach (PropertyData data in obj.Properties)
                    {
                        ListViewItem item = new ListViewItem(listViewGroup);
                        if (list.Items.Count %2 != 0)
                        {
                            item.BackColor = Color.White;
                        }
                        else
                        {
                            item.BackColor = Color.WhiteSmoke;
                        }
                        item.Text = data.Name;
                        if (data.Value != null && !string.IsNullOrEmpty(data.Value.ToString()))
                        {
                            switch (data.Value.GetType().ToString())
                            {
                                case "System.String[]":
                                    string[] stringData = data.Value as string[];
                                    string resStr1 = string.Empty;
                                    foreach (string s in stringData)
                                    {
                                        resStr1 += $"{s} ";
                                    }
                                    item.SubItems.Add(resStr1);
                                    break;
                                case "System.UInt16[]":
                                    ushort[] ushortData = data.Value as ushort[];
                                    string resStr2 = string.Empty;
                                    foreach (ushort u in ushortData)
                                    {
                                        resStr2 += $"{Convert.ToString(u)}";
                                    }
                                    item.SubItems.Add(resStr2);
                                    break;
                                default:
                                    item.SubItems.Add(data.Value.ToString());
                                    break;
                            }
                            list.Items.Add(item);
                        }
                    }
                
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Информация не была получена!");
            }
        }

Также выбор ключа в зависимости от категории, которая была выбрана через интерфейс:
private void toolStripComboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            string key = string.Empty;
            switch (toolStripComboBox1.SelectedItem.ToString())
            {
                case "Батарея":
                    key = "Win32_Battery";
                    break;
                case "Видеоадаптеры":
                    key = "Win32_VideoController";
                    break;
            }
            GetHardWareInfo(key, listView1);

Вот категории, к которым ключи мне отыскать не удалось:
Bluetooth
Аудиовходы и аудиовыходы
Встроенное ПО
Камеры
Компоненты ПО
Компьютер
Контроллеры запоминающих устройств
Мыши и иные указывающие устройства
Программные устройства
Системные устройства
Устройства HID (Human Interface Devices)
Устройства безопасности
Подскажите пожалуйста где к данным группам можно поискать ключи, в противном случае альтернативу решения моей проблемы.
Заранее спасибо!
  • Вопрос задан
  • 91 просмотр
Пригласить эксперта
Ответы на вопрос 1
BasiC2k
@BasiC2k
.NET developer (open to job offers)
Возможно это Вам нужно: CM_Enumerate_Classes ?
Как ещё один вариант - поиграться с open hardware monitor
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы