Загрузка...

Obtaining information about the system and PC components

Thread in C# created by Morn1ngStar Dec 15, 2019. 5343 views

  1. Morn1ngStar
    Декомпельнул один софт, весь код вытащил оттуда же.
    Будет полезно, если хотите защитить свой софт :bomzh:
    [IMG]

    Code
    Все вышеперечисленные функции:
    Code
    using System.Management;
    Code

    private static string GetProcessorId()
    {
    ManagementObjectCollection instances = new ManagementClass("win32_processor").GetInstances();
    string result = string.Empty;
    using (ManagementObjectCollection.ManagementObjectEnumerator enumerator = instances.GetEnumerator())
    {
    if (enumerator.MoveNext())
    {
    result = ((ManagementObject)enumerator.Current).Properties["processorID"].Value.ToString();
    }
    }
    return result;
    }
    Code

    private static string GetHDDSerialNo()
    {
    ManagementObjectCollection instances = new ManagementClass("Win32_LogicalDisk").GetInstances();
    string text = "";
    foreach (ManagementBaseObject managementBaseObject in instances)
    {
    ManagementObject managementObject = (ManagementObject)managementBaseObject;
    text += Convert.ToString(managementObject["VolumeSerialNumber"]);
    }
    return text;
    }
    Code

    private static string GetMACAddress()
    {
    ManagementObjectCollection instances = new ManagementClass("Win32_NetworkAdapterConfiguration").GetInstances();
    string text = string.Empty;
    foreach (ManagementBaseObject managementBaseObject in instances)
    {
    ManagementObject managementObject = (ManagementObject)managementBaseObject;
    if (text == string.Empty && (bool)managementObject["IPEnabled"])
    {
    text = managementObject["MacAddress"].ToString();
    }
    managementObject.Dispose();
    }
    return text;
    }
    Code

    private static string GetBoardMaker()
    {
    foreach (ManagementBaseObject managementBaseObject in new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_BaseBoard").Get())
    {
    ManagementObject managementObject = (ManagementObject)managementBaseObject;
    try
    {
    return managementObject.GetPropertyValue("Manufacturer").ToString();
    }
    catch
    {
    }
    }
    return "Board Maker: Unknown";
    }
    Code

    private static string GetBoardProductId()
    {
    foreach (ManagementBaseObject managementBaseObject in new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_BaseBoard").Get())
    {
    ManagementObject managementObject = (ManagementObject)managementBaseObject;
    try
    {
    return managementObject.GetPropertyValue("Product").ToString();
    }
    catch
    {
    }
    }
    return "Product: Unknown";
    }
    Code

    private static string GetCdRomDrive()
    {
    foreach (ManagementBaseObject managementBaseObject in new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_CDROMDrive").Get())
    {
    ManagementObject managementObject = (ManagementObject)managementBaseObject;
    try
    {
    return managementObject.GetPropertyValue("Drive").ToString();
    }
    catch
    {
    }
    }
    return "CD ROM Drive Letter: Unknown";
    }
    Code

    private static string GetBIOSmaker()
    {
    foreach (ManagementBaseObject managementBaseObject in new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_BIOS").Get())
    {
    ManagementObject managementObject = (ManagementObject)managementBaseObject;
    try
    {
    return managementObject.GetPropertyValue("Manufacturer").ToString();
    }
    catch
    {
    }
    }
    return "BIOS Maker: Unknown";
    }
    Code

    private static string GetBIOSserNo()
    {
    foreach (ManagementBaseObject managementBaseObject in new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_BIOS").Get())
    {
    ManagementObject managementObject = (ManagementObject)managementBaseObject;
    try
    {
    return managementObject.GetPropertyValue("SerialNumber").ToString();
    }
    catch
    {
    }
    }
    return "BIOS Serial Number: Unknown";
    }
    Code

    private static string GetBIOScaption()
    {
    foreach (ManagementBaseObject managementBaseObject in new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_BIOS").Get())
    {
    ManagementObject managementObject = (ManagementObject)managementBaseObject;
    try
    {
    return managementObject.GetPropertyValue("Caption").ToString();
    }
    catch
    {
    }
    }
    return "BIOS Caption: Unknown";
    }
    Code

    private static string GetAccountName()
    {
    foreach (ManagementBaseObject managementBaseObject in new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_UserAccount").Get())
    {
    ManagementObject managementObject = (ManagementObject)managementBaseObject;
    try
    {
    return managementObject.GetPropertyValue("Name").ToString();
    }
    catch
    {
    }
    }
    return "User Account Name: Unknown";
    }
    Code

    private static string GetPhysicalMemory()
    {
    ManagementScope scope = new ManagementScope();
    ObjectQuery query = new ObjectQuery("SELECT Capacity FROM Win32_PhysicalMemory");
    ManagementObjectCollection managementObjectCollection = new ManagementObjectSearcher(scope, query).Get();
    long num = 0L;
    foreach (ManagementBaseObject managementBaseObject in managementObjectCollection)
    {
    long num2 = Convert.ToInt64(((ManagementObject)managementBaseObject)["Capacity"]);
    num += num2;
    }
    num = num / 1024L / 1024L;
    return num.ToString();
    }
    Code

    private static string GetNoRamSlots()
    {
    int num = 0;
    ManagementScope scope = new ManagementScope();
    ObjectQuery query = new ObjectQuery("SELECT MemoryDevices FROM Win32_PhysicalMemoryArray");
    foreach (ManagementBaseObject managementBaseObject in new ManagementObjectSearcher(scope, query).Get())
    {
    num = Convert.ToInt32(((ManagementObject)managementBaseObject)["MemoryDevices"]);
    }
    return num.ToString();
    }
    Code

    private static string GetCPUManufacturer()
    {
    string text = string.Empty;
    foreach (ManagementBaseObject managementBaseObject in new ManagementClass("Win32_Processor").GetInstances())
    {
    ManagementObject managementObject = (ManagementObject)managementBaseObject;
    if (text == string.Empty)
    {
    text = managementObject.Properties["Manufacturer"].Value.ToString();
    }
    }
    return text;
    }
    Code

    private static string GetDefaultIPGateway()
    {
    ManagementObjectCollection instances = new ManagementClass("Win32_NetworkAdapterConfiguration").GetInstances();
    string text = string.Empty;
    foreach (ManagementBaseObject managementBaseObject in instances)
    {
    ManagementObject managementObject = (ManagementObject)managementBaseObject;
    if (text == string.Empty && (bool)managementObject["IPEnabled"])
    {
    text = managementObject["DefaultIPGateway"].ToString();
    }
    managementObject.Dispose();
    }
    return text;
    }
    Code

    private static string GetOSInformation()
    {
    foreach (ManagementBaseObject managementBaseObject in new ManagementObjectSearcher("SELECT * FROM Win32_OperatingSystem").Get())
    {
    ManagementObject managementObject = (ManagementObject)managementBaseObject;
    try
    {
    return string.Concat(new string[]
    {
    ((string)managementObject["Caption"]).Trim(),
    ", ",
    (string)managementObject["Version"],
    ", ",
    (string)managementObject["OSArchitecture"]
    });
    }
    catch
    {
    }
    }
    return "BIOS Maker: Unknown";
    }
    Code

    private static string GetProcessorInformation()
    {
    ManagementObjectCollection instances = new ManagementClass("win32_processor").GetInstances();
    string result = string.Empty;
    foreach (ManagementBaseObject managementBaseObject in instances)
    {
    ManagementObject managementObject = (ManagementObject)managementBaseObject;
    string text = (string)managementObject["Name"];
    result = string.Concat(new string[]
    {
    text,
    ", ",
    (string)managementObject["Caption"],
    ", ",
    (string)managementObject["SocketDesignation"]
    });
    }
    return result;
    }
    Code

    private static string GetComputerName()
    {
    ManagementObjectCollection instances = new ManagementClass("Win32_ComputerSystem").GetInstances();
    string result = string.Empty;
    foreach (ManagementBaseObject managementBaseObject in instances)
    {
    result = (string)((ManagementObject)managementBaseObject)["Name"];
    }
    return result;
    }
     
  2. mmdeveloper
    mmdeveloper Oct 1, 2020 2 Jan 17, 2020
    Хорош, я узнал побольше о библиотеке, спасибо.
     
  3. Supremacy
    Supremacy Oct 6, 2020 Efficiency 1229 Jan 13, 2020
    Летит в закладки:cool_bun:
    Кстати получение имени ПК можно реализовать одной строкой
     
  4. r3xq1
    r3xq1 Oct 9, 2020 54 Jul 27, 2018
    Я предложу свой вариант по использованию WMI с Linq и без просто в использование!
    Подключаем ссылки:
    Code
    System
    System.Data
    System.Management
    Code
    namespace PCInfo
    {
    using System;
    using System.Management;
    using System.Security.Cryptography;
    using System.Text;
    using System.Text.RegularExpressions;

    public static class Hardware
    {
    // Output: AuthenticAMD || 178BFBFF00100F53 ||
    // AMD Phenom™ II P820 Triple-Core Processor, AMD64 Family 16 Model 5 Stepping 3, Socket ASB2
    public static string GetProcessor(bool namescheck, string name) // "Manufacturer", "processorID", "Name"
    {
    const string NAME = "SELECT * FROM Win32_Processor";
    string result = ""; // string.Empty
    try
    {
    using var searcher = new ManagementObjectSearcher(NAME);
    using ManagementObjectCollection items = searcher.Get();
    foreach (ManagementBaseObject obj in items)
    {
    if (namescheck == true && name == "Name")
    {
    string names = obj[name]?.ToString();
    names = names.Replace("(TM)", "™")
    .Replace("(tm)", "™")
    .Replace("(R)", "®")
    .Replace("(r)", "®")
    .Replace("(C)", "©")
    .Replace("(c)", "©")
    .Replace(" ", " ")
    .Replace(" ", " ");
    result = $"{names}, {obj["Caption"]?.ToString()}, {obj["SocketDesignation"]?.ToString()}";
    }
    else
    {
    result = obj.Properties[name]?.Value.ToString();
    }
    }
    }
    catch (Exception) { }
    return result;
    }

    // Output: B20A826CD46BB7A1A403675C
    public static string GetHDDSerialNo()
    {
    const string NAME = "SELECT * FROM Win32_LogicalDisk";
    string result = ""; // string.Empty
    try
    {
    using var searcher = new ManagementObjectSearcher(NAME);
    using ManagementObjectCollection items = searcher.Get();
    foreach (ManagementBaseObject obj in items)
    {
    result += obj["VolumeSerialNumber"]?.ToString();
    }
    }
    catch (Exception) { }
    return result;
    }

    // Output: B4749FE4DE74
    public static string GetMACAddress()
    {
    const string NAME = "SELECT * FROM Win32_NetworkAdapterConfiguration";
    string result = "";
    try
    {
    using var searcher = new ManagementObjectSearcher(NAME);
    using ManagementObjectCollection items = searcher.Get();
    foreach (ManagementBaseObject obj in items)
    {
    if ((bool)obj["IPEnabled"] == true)
    {
    result = obj["MacAddress"]?.ToString();
    }
    }

    if (!string.IsNullOrEmpty(result))
    {
    result = result.Replace(":", "");
    }
    }
    catch (Exception) { }
    return result;
    }

    // Output: SAMSUNG ELECTRONICS CO., LTD. || R425D/R525D
    public static string GetBoardMaker(string name) // "Manufacturer", "Product"
    {
    const string NAME = "SELECT * FROM Win32_BaseBoard";
    string result = "";
    try
    {
    using var searcher = new ManagementObjectSearcher(NAME);
    using ManagementObjectCollection items = searcher.Get();
    foreach (ManagementBaseObject obj in items)
    {
    result = obj[name]?.ToString();
    }
    }
    catch (Exception) { }
    return result;
    }

    // Output: Phoenix Technologies Ltd. || HKJ993BB800691 ||
    // Phoenix SecureCore(tm) NB Version 01PC.M002.20110507.LEO
    public static string GetBIOSmaker(string name) // "Manufacturer", "SerialNumber", "Caption"
    {
    const string NAME = "SELECT * FROM Win32_BIOS";
    string result = "";
    try
    {
    using var searcher = new ManagementObjectSearcher(NAME);
    using ManagementObjectCollection items = searcher.Get();
    foreach (ManagementBaseObject obj in items)
    {
    result = obj[name]?.ToString();
    }
    }
    catch (Exception) { }
    return result;
    }

    // Output: Admin
    public static string GetAccountName()
    {
    const string NAME = "SELECT * FROM Win32_UserAccount";
    string result = "";
    try
    {
    using var searcher = new ManagementObjectSearcher(NAME);
    using ManagementObjectCollection items = searcher.Get();
    foreach (ManagementBaseObject obj in items)
    {
    result = obj["Name"]?.ToString();
    break;
    }
    }
    catch (Exception) { }
    return result;
    }

    // Output: 8GB || 12288MB
    public static string GetPhysicalMemory()
    {
    const string NAME = "SELECT * FROM Win32_PhysicalMemory";
    string result = "";
    try
    {
    using var searcher = new ManagementObjectSearcher(NAME);
    using ManagementObjectCollection items = searcher.Get();
    foreach (ManagementBaseObject obj in items)
    {
    string ConverterMB = Convert.ToString(Math.Round(Convert.ToDouble(obj["Capacity"]) /

    0x4000_0000 * 0x3E8, 0x2)),
    ConverterGB = Convert.ToString(Math.Round(Convert.ToDouble(obj["Capacity"]) /

    0x4000_0000, 0x2));
    result = Convert.ToDouble(obj["Capacity"]) / 0x4000_0000 <= 0x1 ? $"{ConverterMB}MB" :

    $"{ConverterGB}GB";
    }
    }
    catch (Exception) { }
    return result;
    }

    // Output: Microsoft Windows 7 Максимальная, 6.1.7601, 64-bit
    public static string GetOSInfo()
    {
    const string NAME = "SELECT * FROM Win32_OperatingSystem";
    string result = "";
    try
    {
    using var searcher = new ManagementObjectSearcher(NAME);
    using ManagementObjectCollection items = searcher.Get();
    foreach (ManagementBaseObject obj in items)
    {
    result = $"{(obj["Caption"]?.ToString()).Trim()}, {obj["Version"]?.ToString()}, {obj

    ["OSArchitecture"]?.ToString()}";
    break;
    }
    }
    catch (Exception) { }
    return result;
    }

    // Output: ADMIN-PC
    public static string GetComputerName()
    {
    const string NAME = "SELECT * FROM Win32_ComputerSystem";
    string result = "";
    try
    {
    using var searcher = new ManagementObjectSearcher(NAME);
    using ManagementObjectCollection items = searcher.Get();
    foreach (ManagementBaseObject obj in items)
    {
    result = obj["Name"]?.ToString();
    break;
    }
    }
    catch (Exception) { }
    return result;
    }

    // Output: М58D11A1-0014536А-ТВ92320-0X9D7391-6D5839F3
    // Output with true: 8CGRB166-83F96E1B-B3BD6890-BCCDBB21-75AE5D26
    public static string GetLicenseKey(bool bind_to_windows = !true)
    {
    string info = string.Join("|", GetProcessor(false, "processorID"), GetProcessor(true, "Name"),
    GetProcessor(false, "Manufacturer"),
    GetHDDSerialNo(),
    GetMACAddress(),
    GetBoardMaker("Manufacturer"),
    GetBoardMaker("Product"),
    GetBIOSmaker("Manufacturer"),
    GetBIOSmaker("SerialNumber"),
    GetBIOSmaker("Caption"),
    GetPhysicalMemory());

    if (bind_to_windows)
    {
    info += $"|{string.Join("|", GetOSInfo(), GetAccountName(), GetComputerName())}";
    }

    string result = "";
    string[] MsResult = null;
    try
    {
    byte[] encoder = Encoding.UTF8.GetBytes(info);
    using var manager = new SHA1Managed();
    byte[] ByteResult = manager.ComputeHash(encoder);
    foreach (byte b in ByteResult)
    {
    result += $"{b:x2}".ToUpper();
    }
    }
    catch (Exception) { }
    try
    {
    var regex = new Regex(@"(\w{1,8})");
    MatchCollection Matches = regex.Matches(result);
    MsResult = new string[Matches.Count];
    for (int i = 0; i < Matches.Count; i++)
    {
    MsResult[i] = Matches[i].Groups[1].Value;
    }
    }
    catch (Exception) { }
    return string.Join("-", MsResult);
    }
    }
    }
    Code
    namespace PCInfo
    {
    using System;
    using System.Linq;
    using System.Management;
    using System.Security.Cryptography;
    using System.Text;
    using System.Text.RegularExpressions;

    public static class HardwareLinq
    {
    // Output: AuthenticAMD || 178BFBFF00100F53 ||
    // AMD Phenom™ II P820 Triple-Core Processor, AMD64 Family 16 Model 5 Stepping 3, Socket ASB2
    public static string GetProcessor(bool namescheck, string name) // "Manufacturer", "processorID", "Name"
    {
    const string NAME = "SELECT * FROM Win32_Processor";
    string result = ""; // string.Empty
    try
    {
    using var searcher = new ManagementObjectSearcher(NAME);
    using var items = searcher.Get().OfType<ManagementObject>().Where(p => p != null).FirstOrDefault();
    if (namescheck == true && name == "Name")
    {
    string names = items[name]?.ToString();
    names = names.Replace("(TM)", "™")
    .Replace("(tm)", "™")
    .Replace("(R)", "®")
    .Replace("(r)", "®")
    .Replace("(C)", "©")
    .Replace("(c)", "©")
    .Replace(" ", " ")
    .Replace(" ", " ");
    result = $"{names}, {items["Caption"]?.ToString()}, {items["SocketDesignation"]?.ToString()}";
    }
    else
    {
    result = items.Properties[name]?.Value.ToString();
    }
    }
    catch (Exception) { }
    return result;
    }

    // Output: B20A826CD46BB7A1A403675C
    public static string GetHDDSerialNo()
    {
    const string NAME = "SELECT * FROM Win32_LogicalDisk";
    string result = "";
    try
    {
    using var searcher = new ManagementObjectSearcher(NAME);
    //List<string> items = searcher.Get().Cast<ManagementObject>().Select(vsn => (string)vsn

    ["VolumeSerialNumber"]).ToList();
    using var items = searcher.Get().OfType<ManagementObject>().Where(p => p != null).FirstOrDefault();
    result += items["VolumeSerialNumber"]?.ToString().ToLower();
    }
    catch (Exception) { }
    return result;
    }

    // Output: B4749FE4DE74
    public static string GetMACAddress()
    {
    const string NAME = "SELECT * FROM Win32_NetworkAdapterConfiguration";
    string result = "";
    try
    {
    using var searcher = new ManagementObjectSearcher(NAME);
    using var items = searcher.Get().OfType<ManagementObject>().Where(obj => (bool)obj["IPEnabled"] ==

    true).LastOrDefault();
    result = items["MacAddress"]?.ToString().Replace(":", "");
    }
    catch (Exception) { }
    return result;
    }

    // Output: SAMSUNG ELECTRONICS CO., LTD. || R425D/R525D
    public static string GetBoardMaker(string name) // "Manufacturer", "Product"
    {
    const string NAME = "SELECT * FROM Win32_BaseBoard";
    string result = "";
    try
    {
    using var searcher = new ManagementObjectSearcher(NAME);
    using var items = searcher.Get().OfType<ManagementObject>().Where(p => p != null).FirstOrDefault();
    result += items[name]?.ToString();
    }
    catch (Exception) { }
    return result;
    }

    // Output: Phoenix Technologies Ltd. || HKJ993BB800691 ||
    // Phoenix SecureCore(tm) NB Version 01PC.M002.20110507.LEO
    public static string GetBIOSmaker(string name) // "Manufacturer", "SerialNumber", "Caption"
    {
    const string NAME = "SELECT * FROM Win32_BIOS";
    string result = "";
    try
    {
    using var searcher = new ManagementObjectSearcher(NAME);
    using var items = searcher.Get().OfType<ManagementObject>().Where(p => p != null).FirstOrDefault();
    result += items[name]?.ToString();
    }
    catch (Exception) { }
    return result;
    }

    // Output: Admin
    public static string GetAccountName()
    {
    const string NAME = "SELECT * FROM Win32_UserAccount";
    string result = "";
    try
    {
    using var searcher = new ManagementObjectSearcher(NAME);
    using var items = searcher.Get().OfType<ManagementObject>().Where(p => p != null).FirstOrDefault();
    result += items["Name"]?.ToString();
    }
    catch (Exception) { }
    return result;
    }

    // Output: 8GB || 12288MB
    public static string GetPhysicalMemory()
    {
    const string NAME = "SELECT * FROM Win32_PhysicalMemory";
    string result = "";
    try
    {
    using var searcher = new ManagementObjectSearcher(NAME);
    using var items = searcher.Get().OfType<ManagementObject>().Where(p => p != null).FirstOrDefault();
    string ConverterMB = Convert.ToString(Math.Round(Convert.ToDouble(items["Capacity"]) / 0x4000_0000

    * 0x3E8, 0x2)),
    ConverterGB = Convert.ToString(Math.Round(Convert.ToDouble(items["Capacity"]) / 0x4000_0000, 0x2));
    result = Convert.ToDouble(items["Capacity"]) / 0x4000_0000 <= 0x1 ? $"{ConverterMB}MB" :

    $"{ConverterGB}GB";
    }
    catch (Exception) { }
    return result;
    }

    // Output: Microsoft Windows 7 Максимальная, 6.1.7601, 64-bit
    public static string GetOSInfo()
    {
    const string NAME = "SELECT * FROM Win32_OperatingSystem";
    string result = "";
    try
    {
    using var searcher = new ManagementObjectSearcher(NAME);
    using var items = searcher.Get().OfType<ManagementObject>().Where(p => p != null).FirstOrDefault();
    result = $"{(items["Caption"]?.ToString()).Trim()}, {items["Version"]?.ToString()}, {items

    ["OSArchitecture"]?.ToString()}";
    }
    catch (Exception) { }
    return result;
    }

    // Output: ADMIN-PC
    public static string GetComputerName()
    {
    const string NAME = "SELECT * FROM Win32_ComputerSystem";
    string result = "";
    try
    {
    using var searcher = new ManagementObjectSearcher(NAME);
    using var items = searcher.Get().OfType<ManagementObject>().Where(p => p != null).FirstOrDefault();
    result = items["Name"]?.ToString();
    }
    catch (Exception) { }
    return result;
    }

    // Output: М58D11A1-0014536А-ТВ92320-0X9D7391-6D5839F3
    // Output with true: 8CGRB166-83F96E1B-B3BD6890-BCCDBB21-75AE5D26
    public static string GetLicenseKey(bool bind_to_windows = !true)
    {
    string info = string.Join("|", GetProcessor(false, "processorID"), GetProcessor(true, "Name"),
    GetProcessor(false, "Manufacturer"),
    GetHDDSerialNo(),
    GetMACAddress(),
    GetBoardMaker("Manufacturer"),
    GetBoardMaker("Product"),
    GetBIOSmaker("Manufacturer"),
    GetBIOSmaker("SerialNumber"),
    GetBIOSmaker("Caption"),
    GetPhysicalMemory());

    if (bind_to_windows)
    {
    info += $"|{string.Join("|", GetOSInfo(), GetAccountName(), GetComputerName())}";
    }

    string result = "";
    string[] MsResult = null;
    try
    {
    byte[] encoder = Encoding.UTF8.GetBytes(info);
    using var manager = new SHA1Managed();
    byte[] ByteResult = manager.ComputeHash(encoder);
    foreach (byte b in ByteResult)
    {
    result += $"{b:x2}".ToUpper();
    }
    }
    catch (Exception) { }
    try
    {
    var regex = new Regex(@"(\w{1,8})");
    MatchCollection Matches = regex.Matches(result);
    MsResult = new string[Matches.Count];
    for (int i = 0; i < Matches.Count; i++)
    {
    MsResult[i] = Matches[i].Groups[1].Value;
    }
    }
    catch (Exception) { }
    return string.Join("-", MsResult);
    }
    }
    }

    Для версии .Net 4.5
    Code
    namespace PCInfo
    {
    using System;
    using System.Management;
    using System.Security.Cryptography;
    using System.Text;
    using System.Threading.Tasks;

    /* Универсальный ключ на выходе: хххххххххххххххххх=
    Пример использования: File.WriteAllText("Result.txt", HardwareID.GET_ID);
    Требуется NetFramework 4.5 и выше.
    */

    public static class HardwareAsync
    {
    public static string GET_ID = ReturnHWID().Result;

    private static async Task<string> ReturnHWID()
    {
    string info = string.Join("|", GetProcessorID(), GetBiosVersion(), GetDiskDrive());

    byte[] hashedBytes = null;
    try
    {
    byte[] bytes = Encoding.UTF8.GetBytes(info);
    using (var Hash = SHA256.Create())
    {
    hashedBytes = Hash.ComputeHash(bytes);
    }
    string convert = Convert.ToBase64String(hashedBytes).Substring(0x19);
    return await Task.FromResult(convert);
    }
    catch { return GET_ID; }
    }

    private static string GetProcessorID()
    {
    const string NAME = "SELECT * FROM Win32_Processor";
    string result = "";
    try
    {
    using ManagementObjectCollection ProcessorWin = new ManagementObjectSearcher(NAME).Get();
    foreach (ManagementBaseObject obj in ProcessorWin)
    {
    result = obj["ProcessorId"]?.ToString().Substring(0, 4);
    break;
    }
    }
    catch (Exception) { }
    return result;
    }

    private static string GetBiosVersion()
    {
    const string NAME = "SELECT * FROM Win32_BIOS";
    string result = "";
    try
    {
    using ManagementObjectCollection BiosWin = new ManagementObjectSearcher(NAME).Get();
    foreach (ManagementBaseObject bios_Collection in BiosWin)
    {
    result = bios_Collection["Version"]?.ToString().Substring(0, 4);
    break;
    }
    }
    catch (Exception) { }
    return result;
    }

    private static string GetDiskDrive()
    {
    const string NAME = "SELECT * FROM Win32_DiskDrive";
    string result = "";
    try
    {
    using ManagementObjectCollection BiosWin = new ManagementObjectSearcher(NAME).Get();
    foreach (ManagementBaseObject hdd_Collection in BiosWin)
    {
    result = hdd_Collection["Signature"]?.ToString().Substring(0, 4);
    break;
    }
    }
    catch (Exception) { }
    return result;
    }
    }
    }
    Code
    namespace PCInfo
    {
    using System;
    using System.Linq;
    using System.Management;
    using System.Security.Cryptography;
    using System.Text;
    using System.Threading.Tasks;

    public static class HardwareAsyncLinq
    {
    public static string GET_ID = ReturnHWID().Result;

    private static async Task<string> ReturnHWID()
    {
    string info = string.Join("|", GetProcessorID(), GetBiosVersion(), GetDiskDrive());

    byte[] hashedBytes = null;
    try
    {
    byte[] bytes = Encoding.UTF8.GetBytes(info);
    using (var Hash = SHA256.Create())
    {
    hashedBytes = Hash.ComputeHash(bytes);
    }
    string convert = Convert.ToBase64String(hashedBytes).Substring(0x19);
    return await Task.FromResult(convert);
    }
    catch { return GET_ID; }
    }

    private static string GetProcessorID()
    {
    const string NAME = "SELECT * FROM Win32_Processor";
    string result = "";
    try
    {
    using var ProcessorWin = new ManagementObjectSearcher(NAME);
    using var items = ProcessorWin.Get().OfType<ManagementObject>().Where(p => p !=

    null).FirstOrDefault();
    result += items["ProcessorId"]?.ToString().Substring(0, 4);
    }
    catch (Exception) { }
    return result;
    }

    private static string GetBiosVersion()
    {
    const string NAME = "SELECT * FROM Win32_BIOS";
    string result = "";
    try
    {
    using var BiosWin = new ManagementObjectSearcher(NAME);
    using var itembios_Collections = BiosWin.Get().OfType<ManagementObject>().Where(p => p !=

    null).FirstOrDefault();
    result += itembios_Collections["Version"]?.ToString().Substring(0, 4);
    }
    catch (Exception) { }
    return result;
    }

    private static string GetDiskDrive()
    {
    const string NAME = "SELECT * FROM Win32_DiskDrive";
    string result = "";
    try
    {
    using var BiosWin = new ManagementObjectSearcher(NAME);
    using var hdd_Collection = BiosWin.Get().OfType<ManagementObject>().Where(p => p !=

    null).FirstOrDefault();
    result += hdd_Collection["Signature"]?.ToString().Substring(0, 4);
    }
    catch (Exception) { }
    return result;
    }
    }
    }
    Code
    namespace PCInfo
    {
    using System;

    internal static class Program
    {
    [STAThread]
    public static void Main()
    {
    Console.WriteLine(Hardware.GetMACAddress());
    Console.WriteLine(HardwareLinq.GetProcessor(true, "processorID"));
    // и.т.д
    Console.Read();
    }
    }
    }

    P.S: Так же скину весь проект с этими классами: https://github.com/r3xq1/PCInfo
     
  5. Yotic
    Yotic Jan 14, 2021 Ебашу на C# всё что захотите(Разноцветное) 43 Jan 13, 2021
    Получение имени машины можно заменить одной строчкой
    ```
    Environment.MachineName
    ```
     
    1. smatchannel
      Yotic, о, привет :colobok_hi:
  6. shadowmind
    shadowmind Aug 14, 2024 20 Aug 4, 2021
    WMI
    CSHARP
    private static List<string> GetWMI(string WIN32_Class, string ClassItemField)
    {
    List<string> result = new List<string>();

    ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM " + WIN32_Class);

    try {
    foreach (ManagementObject obj in searcher.Get()) {
    result.Add(obj[ClassItemField].ToString().Trim());
    }
    }
    catch (Exception ex) {
    _logger.Inforamtion(ex, "error WMI");
    }

    return result;
    }

    Example:
    CSHARP
    //GetProcessorName
    GetWMI("Win32_Processor", "Name");
     
Loading...
Top