Здравствуйте!
Я делаю программу наподобие диспетчера устройств из 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)
Устройства безопасности
Подскажите пожалуйста где к данным группам можно поискать ключи, в противном случае альтернативу решения моей проблемы.
Заранее спасибо!