-
Автор темы
- #1
По просьбе хорошего знакомого делюсь с вами небольшим исходником получения информации о ПК с помощью стандартной библиотеки
Получение информации о компьютере в языке C# возможно с помощью WMI запросов. Windows Management Instrumentation (WMI) – это инструментарий управления Windows. WMI – это технология для мониторинга работы компьютерной инфраструктуры с помощью Windows.
Работа с WMI похожа на запросы к базе данных. Описание всех классов WMI и их свойств вы можете найти
Включение библиотеки в проект.
Если в коде появляется
1. Использовать "быстрые действия и рефакторинг" в Visual Studio. Если у вас появляется должная подсказка (
2. Если вам не повезло со средой, то единственным решением остается ручное добавление ссылки:
Ключевую роль в программе будет играть функция получения заданной информации о компьютере:
Также я добавлю метод, отображающий в консоли полученную информацию. Это поможет избежать большого количества повторяющегося кода:
Использования List<string> вместо простых строк поможет избежать проблем в работе на машинах с несколькими девайсами, например, видеокартами.
Использование.
Теперь можно спокойно получать любую информацию о пк пользователя с помощью написанных ранее методов:
Вывод:
Также вы можете получить, например загрузку оперативной памяти, возможности данной библиотеки огромны.
Если у вас есть интересные идеи для новых тем - обязательно отпишите мне, так вы поможете форуму в развитии.
System.Management
. В качестве альтернативы можно было использовать WinAPI, но, все же, это гораздо менее удобно, чем через встроенные классы.Получение информации о компьютере в языке C# возможно с помощью WMI запросов. Windows Management Instrumentation (WMI) – это инструментарий управления Windows. WMI – это технология для мониторинга работы компьютерной инфраструктуры с помощью Windows.
Работа с WMI похожа на запросы к базе данных. Описание всех классов WMI и их свойств вы можете найти
Пожалуйста, авторизуйтесь для просмотра ссылки.
.Включение библиотеки в проект.
Если в коде появляется
Пожалуйста, авторизуйтесь для просмотра ссылки.
(кликабельно), это значит, что вы не подключили библиотеку должным образом. Исправить это можно двумя способами:1. Использовать "быстрые действия и рефакторинг" в Visual Studio. Если у вас появляется должная подсказка (
Пожалуйста, авторизуйтесь для просмотра ссылки.
), то можно расслабиться и позволить сделать среде разработки всю работу за вас. Нажимаем на необходимый пункт и переходим к коду :)2. Если вам не повезло со средой, то единственным решением остается ручное добавление ссылки:
- ПКМ по ссылкам в обозревателе решений (Пожалуйста, авторизуйтесь для просмотра ссылки.)
- "Добавить ссылку..." (Пожалуйста, авторизуйтесь для просмотра ссылки.)
- Переходим в "Сборки" и ставим галочку напротив System.Management (Пожалуйста, авторизуйтесь для просмотра ссылки.)
- Жмем "ОК" и радуемся жизни
Ключевую роль в программе будет играть функция получения заданной информации о компьютере:
C#:
private static List<string> GetHardwareInfo(string WIN32_Class, string ClassItemField)
{
List<string> result = new List<string>();
ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM " + WIN32_Class);
try {
foreach (ManagementObject obj in searcher.Get()) {
result.Add(obj[ClassItemField].ToString().Trim());
}
}
catch (Exception ex) {
Console.WriteLine(ex.Message);
}
return result;
}
C#:
private static void OutputResult(string info, List<string> result)
{
Console.Write(info);
Console.WriteLine(String.Join(", ", result));
}
Использование.
Теперь можно спокойно получать любую информацию о пк пользователя с помощью написанных ранее методов:
C#:
public static void Main(string[] args)
{
OutputResult("Процессор: ", GetHardwareInfo("Win32_Processor", "Name"));
OutputResult("Производитель: ", GetHardwareInfo("Win32_Processor", "Manufacturer"));
OutputResult("Описание: ", GetHardwareInfo("Win32_Processor", "Description"));
OutputResult("Видеокарта: ", GetHardwareInfo("Win32_VideoController", "Name"));
OutputResult("Версия драйвера: ", GetHardwareInfo("Win32_VideoController", "DriverVersion"));
OutputResult("Объем памяти (в байтах): ", GetHardwareInfo("Win32_VideoController", "AdapterRAM"));
OutputResult("Название дисковода: ", GetHardwareInfo("Win32_CDROMDrive", "Name"));
OutputResult("Буква привода: ", GetHardwareInfo("Win32_CDROMDrive", "Drive"));
OutputResult("Жесткий диск: ", GetHardwareInfo("Win32_DiskDrive", "Caption"));
OutputResult("Объем (в байтах): ", GetHardwareInfo("Win32_DiskDrive", "Size"));
Console.ReadKey();
}
Пожалуйста, авторизуйтесь для просмотра ссылки.
Также вы можете получить, например загрузку оперативной памяти, возможности данной библиотеки огромны.
C#:
public static void Main(string[] args) {
int ram = 0;
ManagementObjectSearcher ramMonitor = //запрос к WMI для получения памяти ПК
new ManagementObjectSearcher("SELECT TotalVisibleMemorySize,FreePhysicalMemory FROM Win32_OperatingSystem");
foreach (ManagementObject objram in ramMonitor.Get()) {
ulong totalRam = Convert.ToUInt64(objram["TotalVisibleMemorySize"]); //общая память ОЗУ
ulong busyRam = totalRam - Convert.ToUInt64(objram["FreePhysicalMemory"]); //занятная память = (total-free)
ram += Convert.ToInt32(busyRam * 100 / totalRam); ;
}
Console.WriteLine($"Загрузка RAM: {ram}%");
Console.ReadLine();
}
Если у вас есть интересные идеи для новых тем - обязательно отпишите мне, так вы поможете форуму в развитии.