Можно ли в данном случае сделать лаконичней ? Сбор данных WMI - C#

Формулировка задачи:

Приходится собирать данные о машине. Я использую WMI. Приходится выводить их на консоль. И также в файл. Вопрос, можно ли сделать (на примере) лаконичней код сбора данных с WMI ?
 // информация о дисках (технология windows WMI)
 
 public static void GetDiskInfo()
        {
        ManagementObjectSearcher srch1 = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM      Win32_Volume");
            String[] st = new string[500]; //тупо с запасом. Понимаю что тупо. Прикрутить динамику ?
            int i = 0;
            st[i] = "== Информация о дисках (через WMI):============"; i++;
            st[i] = "-----------------------------------------------"; i++;
            foreach (ManagementObject kolsQ in srch1.Get())
            {
                i++;
 
                st[i] = "DriveLetter: " +  kolsQ["DriveLetter"]; i++;
                st[i] = "Capacity:" +  kolsQ["Capacity"]; i++;
                st[i] = "Caption: " +  kolsQ["Caption"]; i++;
                st[i] = "DriveType: " + kolsQ["DriveType"]; i++;
                st[i] = "FileSystem: " +  kolsQ["FileSystem"]; i++;
                st[i] = "FreeSpace: " +  kolsQ["FreeSpace"]; i++;
                st[i] = "----------------------------------------";
 
            }
            i++;
            st[i] = "--Конец блока информации о дисках (через WMI)---";
 
            for (int d = 0; d < i + 1; d++)
            {
                Console.WriteLine(st[d]);
                ToFile(st[d]);
            }
 
     }
 
          //запись строк в текстовый файл,добавлением.
        static void ToFile(String strToFile)
        {
           //Здесь using,для того что бы после операции объект sw был удален
            using (StreamWriter sw = File.AppendText(@"c:\Цех84_тех_отдел2_ПК_инвN9341_СелёдкинЕВ_log.txt"))
            {
                sw.WriteLine(strToFile);
            }
        }
результат (файл и консоль) == Информация о дисках (через WMI):============ ----------------------------------------------- DriveLetter: Capacity:104853504 Caption: \\?\Volume{08903a46-73a5-11e2-9df0-806e6g6e6963}\ DriveType: 3 FileSystem: NTFS FreeSpace: 72781824 ---------------------------------------- DriveLetter: Capacity: Caption: \\?\Volume{ad715e1f-7380-11e2-a0b8-001d60e4cce6}\ DriveType: 3 FileSystem: FreeSpace: ---------------------------------------- DriveLetter: Capacity: Caption: \\?\Volume{266a54f7-7396-13e2-a7cf-001d60e7cce5}\ DriveType: 3 FileSystem: FreeSpace: ---------------------------------------- DriveLetter: C: Capacity:161341239296 Caption: C:\ DriveType: 3 FileSystem: NTFS FreeSpace: 65455742976 ---------------------------------------- DriveLetter: D: Capacity:838754627584 Caption: D:\ DriveType: 3 FileSystem: NTFS FreeSpace: 117283680256 ---------------------------------------- DriveLetter: F: Capacity:1000201777152 Caption: F:\ DriveType: 3 FileSystem: NTFS FreeSpace: 419504353280 ---------------------------------------- DriveLetter: E: Capacity: Caption: E:\ DriveType: 5 FileSystem: FreeSpace: ---------------------------------------- DriveLetter: H: Capacity: Caption: H:\ DriveType: 5 FileSystem: FreeSpace: ---------------------------------------- --Конец блока информации о дисках (через WMI)---

Код к задаче: «Можно ли в данном случае сделать лаконичней ? Сбор данных WMI - C#»

textual
      List<string> dv = new List<string>();
            dv.Add("== Информация о дисках (через WMI):============");
            dv.Add("-----------------------------------------------");
            foreach (ManagementObject kolsQ in srch1.Get())
            {
            dv.Add("DriveLetter: " + kolsQj["DriveLetter"]);
            dv.Add("Capacity:" + kolsQ["Capacity"]); 
            dv.Add("Caption: " + kolsQ["Caption"]); 
            dv.Add("DriveType: " + kolsQ["DriveType"]);
            dv.Add("FileSystem: " + kolsQ["FileSystem"]);
            dv.Add("FreeSpace: " + kolsQ["FreeSpace"]);
            dv.Add("-----------------------------------------------");
            }
 
            foreach (string g in dv)
            {
                Console.WriteLine(g);
                ToFile(g);
            }

10   голосов, оценка 4.100 из 5


СОХРАНИТЬ ССЫЛКУ
Похожие ответы