Pull to refresh

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

Reading time3 min
Views6.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
Tags:
Hubs:
+25
Comments43

Articles