Страницы

Поиск по вопросам

среда, 4 декабря 2019 г.

Получение описания ПК программно

#c_sharp


В свойствах "Компьютера", в блоке "Имя компьютера, имя домена и параметры рабочей
группы".
Имя компьютера и параметры раб.группы можно получить программно, используя методы
классы Environments.
А как программно получить описание компьютера(на скриншоте - между "Полное имя" и
"Рабочая группа")?


    


Ответы

Ответ 1



В классе System.Environments нет методов, возвращающих описание компьютера. Однако есть другие возможности получить описание компьютера. Рассмотрим более детально два варианта решения поставленной задачи. Решение #1 Можно получить описание компьютера из реестра. Есть путь реестра, где лежит описание компьютера: HKLM\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters\srvcomment Используя метод Registry.GetValue необходимо сделать следующее: using Microsoft.Win32; string key = @"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters"; string computerDescription = (string)Registry.GetValue(key, "srvcomment", null); Решение #2 Можно использовать ManagementObjectSearcher. Пример кода: public static void RetrieveComputerProps() { //initialize the select query with command text SelectQuery query = new SelectQuery(@"Select * from Win32_ComputerSystem"); //initialize the searcher with the query it is supposed to execute using (ManagementObjectSearcher searcher = new ManagementObjectSearcher(query)) { //execute the query foreach (ManagementObject process in searcher.Get()) { //print system info process.Get(); Console.WriteLine("/*********Computer System Information ***************/"); Console.WriteLine("{0}{1}", "Caption :", process["Caption"]); Console.WriteLine("{0}{1}", "Description:", process["Description"]); Console.WriteLine("{0}{1}", "Manufacturer:", process["Manufacturer"]); Console.WriteLine("{0}{1}", "Model:", process["Model"]); Console.WriteLine("{0}{1}","TotalPhysicalMemory:",process["TotalPhysicalMemory"]); } } } Полученный результат:

Ответ 2



Немного доработал решение от Дениса, добавив вывод всех свойств из Win32_ComputerSystem (указанных 5 свойств может быть недостаточно) SelectQuery query = new SelectQuery("Select * from Win32_ComputerSystem"); using (ManagementObjectSearcher searcher = new ManagementObjectSearcher(query)) { foreach (ManagementObject mo in searcher.Get()) { mo.Get(); foreach (PropertyData prop in mo.Properties) { Console.WriteLine("{0}: {1}", prop.Name, prop.Value); } } } Полно других полезных Win32_ классов, их можно запросить следующим образом: List classes = new List(); ManagementObjectSearcher wmi = new ManagementObjectSearcher("SELECT * FROM meta_class WHERE __CLASS LIKE 'Win32_%'"); foreach (ManagementObject obj in wmi.Get()) { var cls = obj["__CLASS"].ToString(); //не больше 1 подчеркивания в названии if (cls.Count(c => c == '_') < 2) classes.Add(cls); } foreach (string cls in classes) Console.WriteLine(cls); Console.WriteLine("*** Всего основных Win32_ классов: " + classes.Count);

Комментариев нет:

Отправить комментарий