Compare commits

..

No commits in common. "4a8e1a987b6af0e496199c3ec022d7107985f02e" and "553b5b0ec3e3283471bce016a34555c72b6e298c" have entirely different histories.

2 changed files with 189 additions and 251 deletions

View File

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

View File

@ -2,7 +2,7 @@
<PropertyGroup> <PropertyGroup>
<TargetFramework>net7.0</TargetFramework> <TargetFramework>net7.0</TargetFramework>
<Version>2023.212.0</Version> <Version>2023.211.0</Version>
<Authors>Alexander Babaev</Authors> <Authors>Alexander Babaev</Authors>
<Product>ANB Software Components Pack</Product> <Product>ANB Software Components Pack</Product>
<Description>Library of some useful functions in C# language.</Description> <Description>Library of some useful functions in C# language.</Description>