Как стать автором
Обновить

SiSoft Sandra своими руками

Время на прочтение3 мин
Количество просмотров6.3K
Вы пользуетесь Sisoft Sandra или аналогичными программами?
Давайте потратим 15 минут и напишем скелет своей программы аналогичного функционала.


Небольшое лирическое отступление. Для начала необходимо сказать, что Windows имеет такую интересную вещь, как WMI. Это не что иное как надстройка над Windows Driver Model, которая и позволит нам без особых проблем узнать всю подноготную нашего любимого компьютера.

Итак приступим:
Для начала необходимо прикрутить к нашему проекту необходимые сборки. А именно System.Management. В using пропишем System.Management и System.Management.Instrumentation.

После чего идем читать про то, что собственно предоставляет нас WMI. Но это как то совсем не интересно, давайте уже наконец начнем писать программу. Тем более, что она простая и все станет понятно по ходу написания. Для этого идем сразу к описанию классов WMI. Я реши выбрать Win32 Classes, тем более, именно с помощью их мы и будем получать информацию о железе.

Вот пример того, как легко и просто можно получить информацию о логических дисках:

public static void PrintDisksStat()
{
// сначала нам необходимо создать объект — запрос, в котором собственно и необходимо указать, что и откуда мы хотим получить
ObjectQuery DiskQuery = new System.Management.ObjectQuery(«select FreeSpace, FileSystem, Size, Name, VolumeName, VolumeSerialNumber from Win32_LogicalDisk where DriveType = 3»);
// «Искатель» информации, приближенный аналог DataSet
ManagementObjectSearcher DiskSearcher = new ManagementObjectSearcher(DiskQuery);
ManagementObjectCollection DiskCollection = DiskSearcher.Get();
foreach (ManagementObject DiskInfo in DiskCollection)
{
Console.WriteLine(«Имя диска: » + DiskInfo[«Name»].ToString());
Console.WriteLine(«Размер диска: » + DiskInfo[«Size»].ToString());
Console.WriteLine(«Название тома: » + DiskInfo[«VolumeName»].ToString());
Console.WriteLine(«Файловая система: » + DiskInfo[«FileSystem»].ToString());
Console.WriteLine(«Свободное место: » + DiskInfo[«FreeSpace»].ToString());
Console.WriteLine(«Серийный номер тома: » + DiskInfo[«VolumeSerialNumber»].ToString());
}
}
Думаю, что комментарии излишни. Хотя я погорячился — обязательно почитайте, что еще интересного есть в классе Win32_LogicalDisk.

Аналогично можно получить информацию о процессоре.
public static void PrintProcessorStat()
{
ObjectQuery ProcessorQuery = new System.Management.ObjectQuery(«select Name, Caption, Description, L2CacheSize, Manufacturer, Revision from Win32_Processor where ProcessorType = 3»);
ManagementObjectSearcher ProcessorSearcher = new ManagementObjectSearcher(ProcessorQuery);
ManagementObjectCollection ProcessorCollection = ProcessorSearcher.Get();
foreach (ManagementObject ProcessorInfo in ProcessorCollection)
{
Console.WriteLine(«Информация о процессоре;»);
Console.WriteLine(«Имя: » + ProcessorInfo[«Name»].ToString());
Console.WriteLine(«Метка: » + ProcessorInfo[«Caption»].ToString());
Console.WriteLine(«Описание: » + ProcessorInfo[«Description»].ToString());
Console.WriteLine(«Кэш 2 уровня: » + ProcessorInfo[«L2CacheSize»].ToString());
Console.WriteLine(«Производитель: » + ProcessorInfo[«Manufacturer»].ToString());
Console.WriteLine(«Ревизия: » + ProcessorInfo[«Revision»].ToString());
}
}

Опять же могу сказать читайте MSDN.

Вот собственно и все, что я хотел рассказать. Другую информацию получить также просто. необходимо только потратить немного времени на изучение документации.

Update: Примеры приведены на C# 2.0. IDE — VS2005 Express
Теги:
Хабы:
+25
Комментарии43

Публикации

Изменить настройки темы

Истории

Ближайшие события

Weekend Offer в AliExpress
Дата20 – 21 апреля
Время10:00 – 20:00
Место
Онлайн
Конференция «Я.Железо»
Дата18 мая
Время14:00 – 23:59
Место
МоскваОнлайн