diff --git a/anbs_cp/Classes/OsInfo.cs b/anbs_cp/Classes/OsInfo.cs index adbc3eb..ad059bc 100644 --- a/anbs_cp/Classes/OsInfo.cs +++ b/anbs_cp/Classes/OsInfo.cs @@ -51,6 +51,9 @@ public static class OsInfo /// public static List Drives { get; set; } + /// + /// Сеть + /// public static List Net { get; set; } #region Служебные методы @@ -73,47 +76,61 @@ public static class OsInfo /// Список информации о процессорах private static List GetProcessors () { - //Создаю результирующий список - List processorsList = new(); - - //Создаю классы менеджмента - ManagementClass management = new("Win32_Processor"); - ManagementObjectCollection collection = management.GetInstances(); - - //Получаю число процессоров - int processorsCount = collection.Cast() - .Select(static a => a.Properties["ProcessorId"].Value.ToString()).Count(); - - //Перебираю массив данных - for (int ind = 0; ind < processorsCount; ind++) + try { - //Создаю элемент информации о процессоре - OsProcessorInfo processor = new() + //Создаю результирующий список + List processorsList = new(); + + //Создаю классы менеджмента + ManagementClass management = new("Win32_Processor"); + ManagementObjectCollection collection = management.GetInstances(); + + //Получаю число процессоров + int processorsCount = collection.Cast() + .Select(static a => a.Properties["ProcessorId"].Value.ToString()).Count(); + + //Перебираю массив данных + for (int ind = 0; ind < processorsCount; ind++) { - Caption = collection.Cast() - .Select(static a => a.Properties["Caption"].Value.ToString()).ElementAtOrDefault(ind), - Description = collection.Cast() - .Select(static a => a.Properties["Description"].Value.ToString()).ElementAtOrDefault(ind), - DeviceId = collection.Cast() - .Select(static a => a.Properties["DeviceID"].Value.ToString()).ElementAtOrDefault(ind), - Manufacturer = collection.Cast() - .Select(static a => a.Properties["Manufacturer"].Value.ToString()).ElementAtOrDefault(ind), - MaxClockSpeed = TypeConverter.StrToInt(collection.Cast() - .Select(static a => a.Properties["MaxClockSpeed"].Value.ToString()).ElementAtOrDefault(ind) ?? "0"), - Name = collection.Cast() - .Select(static a => a.Properties["Name"].Value.ToString()).ElementAtOrDefault(ind), - NumberOfCores = TypeConverter.StrToInt(collection.Cast() - .Select(static a => a.Properties["NumberOfCores"].Value.ToString()).ElementAtOrDefault(ind) ?? "0"), - NumberOfLogicalProcessors = TypeConverter.StrToInt(collection.Cast() - .Select(static a => a.Properties["NumberOfLogicalProcessors"].Value.ToString()).ElementAtOrDefault(ind) ?? "0") - }; + //Создаю элемент информации о процессоре + OsProcessorInfo processor = new() + { + Caption = collection.Cast() + .Select(static a => a.Properties["Caption"].Value.ToString()).ElementAtOrDefault(ind), + Description = collection.Cast() + .Select(static a => a.Properties["Description"].Value.ToString()).ElementAtOrDefault(ind), + DeviceId = collection.Cast() + .Select(static a => a.Properties["DeviceID"].Value.ToString()).ElementAtOrDefault(ind), + Manufacturer = collection.Cast() + .Select(static a => a.Properties["Manufacturer"].Value.ToString()).ElementAtOrDefault(ind), + MaxClockSpeed = TypeConverter.StrToInt(collection.Cast() + .Select(static a => + a.Properties["MaxClockSpeed"].Value.ToString()) + .ElementAtOrDefault(ind) ?? + "0"), + Name = collection.Cast() + .Select(static a => a.Properties["Name"].Value.ToString()).ElementAtOrDefault(ind), + NumberOfCores = TypeConverter.StrToInt(collection.Cast() + .Select(static a => + a.Properties["NumberOfCores"].Value.ToString()) + .ElementAtOrDefault(ind) ?? + "0"), + NumberOfLogicalProcessors = TypeConverter.StrToInt(collection.Cast() + .Select(static a => a.Properties["NumberOfLogicalProcessors"].Value.ToString()) + .ElementAtOrDefault(ind) ?? "0") + }; - //Добавляю в список - processorsList.Add(processor); + //Добавляю в список + processorsList.Add(processor); + } + + //Возвращаю список + return processorsList; + } + catch (NullReferenceException) + { + return new(); } - - //Возвращаю список - return processorsList; } /// @@ -122,13 +139,20 @@ public static class OsInfo /// Список информации о количестве оперативной памяти private static ulong GetRAMs () { - //Создаю классы менеджмента - ManagementClass management = new("Win32_ComputerSystem"); - ManagementObjectCollection collection = management.GetInstances(); + try + { + //Создаю классы менеджмента + ManagementClass management = new("Win32_ComputerSystem"); + ManagementObjectCollection collection = management.GetInstances(); - //Получаю результат - return TypeConverter.StrToUInt64(collection.Cast() - .Select(static a => a.Properties["TotalPhysicalMemory"].Value.ToString()).FirstOrDefault() ?? "0"); + //Получаю результат + return TypeConverter.StrToUInt64(collection.Cast() + .Select(static a => a.Properties["TotalPhysicalMemory"].Value.ToString()).FirstOrDefault() ?? "0"); + } + catch (NullReferenceException) + { + return 0; + } } /// @@ -137,56 +161,63 @@ public static class OsInfo /// Список информации о видеоадаптерах private static List GetVideoAdapterInfos () { - //Создаю результирующий список - List videosList = new(); - - //Создаю классы менеджмента - ManagementClass management = new("Win32_VideoController"); - ManagementObjectCollection collection = management.GetInstances(); - - //Получаю число адаптеров - int count = collection.Cast() - .Select(static a => a.Properties["DeviceID"].Value.ToString()).Count(); - - //Перебираю массив данных - for (int ind = 0; ind < count; ind++) + try { - //Создаю элемент информации об адаптере - OsVideoAdapterInfo adapter = new() + //Создаю результирующий список + List videosList = new(); + + //Создаю классы менеджмента + ManagementClass management = new("Win32_VideoController"); + ManagementObjectCollection collection = management.GetInstances(); + + //Получаю число адаптеров + int count = collection.Cast() + .Select(static a => a.Properties["DeviceID"].Value.ToString()).Count(); + + //Перебираю массив данных + for (int ind = 0; ind < count; ind++) { - Caption = collection.Cast() - .Select(static a => a.Properties["Caption"].Value.ToString()).ElementAtOrDefault(ind), - Description = collection.Cast() - .Select(static a => a.Properties["Description"].Value.ToString()).ElementAtOrDefault(ind), - DeviceId = collection.Cast() - .Select(static a => a.Properties["DeviceID"].Value.ToString()).ElementAtOrDefault(ind), - AdapterRAM = TypeConverter.StrToInt(collection.Cast() - .Select(static a => a.Properties["AdapterRAM"].Value.ToString()).ElementAtOrDefault(ind) ?? "0"), - DriverDate = collection.Cast() - .Select(static a => a.Properties["DriverDate"].Value.ToString()).ElementAtOrDefault(ind), - Name = collection.Cast() - .Select(static a => a.Properties["Name"].Value.ToString()).ElementAtOrDefault(ind), - CurrentResolution = (TypeConverter.StrToInt(collection.Cast() - .Select(static a => a.Properties["CurrentHorizontalResolution"].Value.ToString()).ElementAtOrDefault(ind) ?? "0"), - TypeConverter.StrToInt(collection.Cast() - .Select(static a => a.Properties["CurrentVerticalResolution"].Value.ToString()) - .ElementAtOrDefault(ind) ?? "0")), - SystemName = collection.Cast() - .Select(static a => a.Properties["SystemName"].Value.ToString()).ElementAtOrDefault(ind), - DriverVersion = collection.Cast() - .Select(static a => a.Properties["DriverVersion"].Value.ToString()).ElementAtOrDefault(ind), - InstalledDisplayDrivers = collection.Cast() - .Select(static a => a.Properties["InstalledDisplayDrivers"].Value.ToString()).ElementAtOrDefault(ind), - VideoProcessor = collection.Cast() - .Select(static a => a.Properties["VideoProcessor"].Value.ToString()).ElementAtOrDefault(ind) - }; + //Создаю элемент информации об адаптере + OsVideoAdapterInfo adapter = new() + { + Caption = collection.Cast() + .Select(static a => a.Properties["Caption"].Value.ToString()).ElementAtOrDefault(ind), + Description = collection.Cast() + .Select(static a => a.Properties["Description"].Value.ToString()).ElementAtOrDefault(ind), + DeviceId = collection.Cast() + .Select(static a => a.Properties["DeviceID"].Value.ToString()).ElementAtOrDefault(ind), + AdapterRAM = TypeConverter.StrToInt(collection.Cast() + .Select(static a => a.Properties["AdapterRAM"].Value.ToString()).ElementAtOrDefault(ind) ?? "0"), + DriverDate = collection.Cast() + .Select(static a => a.Properties["DriverDate"].Value.ToString()).ElementAtOrDefault(ind), + Name = collection.Cast() + .Select(static a => a.Properties["Name"].Value.ToString()).ElementAtOrDefault(ind), + CurrentResolution = (TypeConverter.StrToInt(collection.Cast() + .Select(static a => a.Properties["CurrentHorizontalResolution"].Value.ToString()).ElementAtOrDefault(ind) ?? "0"), + TypeConverter.StrToInt(collection.Cast() + .Select(static a => a.Properties["CurrentVerticalResolution"].Value.ToString()) + .ElementAtOrDefault(ind) ?? "0")), + SystemName = collection.Cast() + .Select(static a => a.Properties["SystemName"].Value.ToString()).ElementAtOrDefault(ind), + DriverVersion = collection.Cast() + .Select(static a => a.Properties["DriverVersion"].Value.ToString()).ElementAtOrDefault(ind), + InstalledDisplayDrivers = collection.Cast() + .Select(static a => a.Properties["InstalledDisplayDrivers"].Value.ToString()).ElementAtOrDefault(ind), + VideoProcessor = collection.Cast() + .Select(static a => a.Properties["VideoProcessor"].Value.ToString()).ElementAtOrDefault(ind) + }; - //Добавляю в список - videosList.Add(adapter); + //Добавляю в список + videosList.Add(adapter); + } + + //Возвращаю список + return videosList; + } + catch (NullReferenceException) + { + return new(); } - - //Возвращаю список - return videosList; } /// @@ -195,17 +226,24 @@ public static class OsInfo /// Список информации о дисках private static List GetDriveInfos () { - //Создаю результат - List result = new(); + try + { + //Создаю результат + List result = new(); - //Добавление всех HDD/SSD дисков - result.AddRange(GetHDDs()); + //Добавление всех HDD/SSD дисков + result.AddRange(GetHDDs()); - //Добавление всех CD/DVD/BD дисков - result.AddRange(GetCDRom()); + //Добавление всех CD/DVD/BD дисков + result.AddRange(GetCDRom()); - //Вывожу список - return result; + //Вывожу список + return result; + } + catch (NullReferenceException) + { + return new(); + } } /// @@ -214,44 +252,51 @@ public static class OsInfo /// Информация обо всех HDD/SSD дисках private static List GetHDDs () { - //Создаю результирующий список - List driveList = new(); - - //Создаю классы менеджмента - ManagementClass management = new("Win32_DiskDrive"); - ManagementObjectCollection collection = management.GetInstances(); - - //Получаю число адаптеров - int count = collection.Cast() - .Select(static a => a.Properties["DeviceID"].Value.ToString()).Count(); - - //Перебираю массив данных - for (int ind = 0; ind < count; ind++) + try { - //Создаю элемент информации об адаптере - OsDriveInfo drive = new() + //Создаю результирующий список + List driveList = new(); + + //Создаю классы менеджмента + ManagementClass management = new("Win32_DiskDrive"); + ManagementObjectCollection collection = management.GetInstances(); + + //Получаю число адаптеров + int count = collection.Cast() + .Select(static a => a.Properties["DeviceID"].Value.ToString()).Count(); + + //Перебираю массив данных + for (int ind = 0; ind < count; ind++) { - Type = EDriveType.DtHardDisc, - Caption = collection.Cast() - .Select(static a => a.Properties["Caption"].Value.ToString()).ElementAtOrDefault(ind), - Description = collection.Cast() - .Select(static a => a.Properties["Description"].Value.ToString()).ElementAtOrDefault(ind), - DeviceId = collection.Cast() - .Select(static a => a.Properties["DeviceID"].Value.ToString()).ElementAtOrDefault(ind), - Name = collection.Cast() - .Select(static a => a.Properties["Name"].Value.ToString()).ElementAtOrDefault(ind), - TotalSize = TypeConverter.StrToUInt64(collection.Cast() - .Select(static a => a.Properties["Size"].Value.ToString()).ElementAtOrDefault(ind) ?? "0"), - Model = collection.Cast() - .Select(static a => a.Properties["Model"].Value.ToString()).ElementAtOrDefault(ind) - }; + //Создаю элемент информации об адаптере + OsDriveInfo drive = new() + { + Type = EDriveType.DtHardDisc, + Caption = collection.Cast() + .Select(static a => a.Properties["Caption"].Value.ToString()).ElementAtOrDefault(ind), + Description = collection.Cast() + .Select(static a => a.Properties["Description"].Value.ToString()).ElementAtOrDefault(ind), + DeviceId = collection.Cast() + .Select(static a => a.Properties["DeviceID"].Value.ToString()).ElementAtOrDefault(ind), + Name = collection.Cast() + .Select(static a => a.Properties["Name"].Value.ToString()).ElementAtOrDefault(ind), + TotalSize = TypeConverter.StrToUInt64(collection.Cast() + .Select(static a => a.Properties["Size"].Value.ToString()).ElementAtOrDefault(ind) ?? "0"), + Model = collection.Cast() + .Select(static a => a.Properties["Model"].Value.ToString()).ElementAtOrDefault(ind) + }; - //Добавляю в список - driveList.Add(drive); + //Добавляю в список + driveList.Add(drive); + } + + //Возвращаю список + return driveList; + } + catch (NullReferenceException) + { + return new(); } - - //Возвращаю список - return driveList; } /// @@ -260,44 +305,51 @@ public static class OsInfo /// Информация обо всех CD/DVD/BD дисках private static List GetCDRom () { - //Создаю результирующий список - List driveList = new(); - - //Создаю классы менеджмента - ManagementClass management = new("Win32_CDROMDrive"); - ManagementObjectCollection collection = management.GetInstances(); - - //Получаю число адаптеров - int count = collection.Cast() - .Select(static a => a.Properties["DeviceID"].Value.ToString()).Count(); - - //Перебираю массив данных - for (int ind = 0; ind < count; ind++) + try { - //Создаю элемент информации об адаптере - OsDriveInfo drive = new() + //Создаю результирующий список + List driveList = new(); + + //Создаю классы менеджмента + ManagementClass management = new("Win32_CDROMDrive"); + ManagementObjectCollection collection = management.GetInstances(); + + //Получаю число адаптеров + int count = collection.Cast() + .Select(static a => a.Properties["DeviceID"].Value.ToString()).Count(); + + //Перебираю массив данных + for (int ind = 0; ind < count; ind++) { - Type = EDriveType.DtCDRom, - Caption = collection.Cast() - .Select(static a => a.Properties["Caption"].Value.ToString()).ElementAtOrDefault(ind), - Description = collection.Cast() - .Select(static a => a.Properties["Description"].Value.ToString()).ElementAtOrDefault(ind), - DeviceId = collection.Cast() - .Select(static a => a.Properties["DeviceID"].Value.ToString()).ElementAtOrDefault(ind), - Name = collection.Cast() - .Select(static a => a.Properties["Name"].Value.ToString()).ElementAtOrDefault(ind), - //Ставится 0, чтобы не проверять корректность загрузки и читаемость диска, а также избежать удлинения получения информации - TotalSize = 0, - Model = collection.Cast() - .Select(static a => a.Properties["Manufacturer"].Value.ToString()).ElementAtOrDefault(ind) - }; + //Создаю элемент информации об адаптере + OsDriveInfo drive = new() + { + Type = EDriveType.DtCDRom, + Caption = collection.Cast() + .Select(static a => a.Properties["Caption"].Value.ToString()).ElementAtOrDefault(ind), + Description = collection.Cast() + .Select(static a => a.Properties["Description"].Value.ToString()).ElementAtOrDefault(ind), + DeviceId = collection.Cast() + .Select(static a => a.Properties["DeviceID"].Value.ToString()).ElementAtOrDefault(ind), + Name = collection.Cast() + .Select(static a => a.Properties["Name"].Value.ToString()).ElementAtOrDefault(ind), + //Ставится 0, чтобы не проверять корректность загрузки и читаемость диска, а также избежать удлинения получения информации + TotalSize = 0, + Model = collection.Cast() + .Select(static a => a.Properties["Manufacturer"].Value.ToString()).ElementAtOrDefault(ind) + }; - //Добавляю в список - driveList.Add(drive); + //Добавляю в список + driveList.Add(drive); + } + + //Возвращаю список + return driveList; + } + catch (NullReferenceException) + { + return new(); } - - //Возвращаю список - return driveList; } /// @@ -306,35 +358,45 @@ public static class OsInfo /// Информация о сети интернет private static List GetNet () { - //Создаю результирующий список - List netList = new(); - - //Получаю информацию о всех сетевых интерфейсах - foreach (NetworkInterface adapter in NetworkInterface.GetAllNetworkInterfaces()) + try { - //Создаю элемент - OsNetInfo netInfo = new() - { - Name = adapter.Name, - Description = adapter.Description, - MacAddress = adapter.OperationalStatus == OperationalStatus.Up ? adapter.GetPhysicalAddress().ToString() : null - }; + //Создаю результирующий список + List netList = new(); - //Получаю IP-адрес - foreach (UnicastIPAddressInformation info in adapter.GetIPProperties().UnicastAddresses.Where(static info => - info.Address.AddressFamily == AddressFamily.InterNetwork && info.IsDnsEligible)) + //Получаю информацию о всех сетевых интерфейсах + foreach (NetworkInterface adapter in NetworkInterface.GetAllNetworkInterfaces()) { - if (!string.IsNullOrWhiteSpace(netInfo.IPAddress)) - netInfo.IPAddress += ";"; - netInfo.IPAddress += info.Address.ToString(); + //Создаю элемент + OsNetInfo netInfo = new() + { + Name = adapter.Name, + Description = adapter.Description, + MacAddress = adapter.OperationalStatus == OperationalStatus.Up + ? adapter.GetPhysicalAddress().ToString() + : null + }; + + //Получаю IP-адрес + foreach (UnicastIPAddressInformation info in adapter.GetIPProperties().UnicastAddresses.Where( + static info => + info.Address.AddressFamily == AddressFamily.InterNetwork && info.IsDnsEligible)) + { + if (!string.IsNullOrWhiteSpace(netInfo.IPAddress)) + netInfo.IPAddress += ";"; + netInfo.IPAddress += info.Address.ToString(); + } + + //Добавляю адаптер + netList.Add(netInfo); } - //Добавляю адаптер - netList.Add(netInfo); + //Возвращаю список + return netList; + } + catch (NullReferenceException) + { + return new(); } - - //Возвращаю список - return netList; } #endregion } \ No newline at end of file diff --git a/anbs_cp/anbs_cp.csproj b/anbs_cp/anbs_cp.csproj index bdbb49c..9b03e5b 100644 --- a/anbs_cp/anbs_cp.csproj +++ b/anbs_cp/anbs_cp.csproj @@ -2,7 +2,7 @@ net7.0 - 2023.204.0 + 2023.212.0 Alexander Babaev ANB Software Components Pack Library of some useful functions in C# language.