Загрузка...

Получение информации о системе и комплектующих пк

Тема в разделе C# создана пользователем Morn1ngStar 15 дек 2019. 5251 просмотр

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

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

    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;
    }
    Код

    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;
    }
    Код

    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;
    }
    Код

    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";
    }
    Код

    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";
    }
    Код

    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";
    }
    Код

    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";
    }
    Код

    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";
    }
    Код

    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";
    }
    Код

    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";
    }
    Код

    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();
    }
    Код

    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();
    }
    Код

    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;
    }
    Код

    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;
    }
    Код

    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";
    }
    Код

    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;
    }
    Код

    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;
    }
     
    15 дек 2019 Изменено
  2. mmdeveloper
    mmdeveloper 1 окт 2020 2 17 янв 2020
    Хорош, я узнал побольше о библиотеке, спасибо.
     
  3. Supremacy
    Supremacy 6 окт 2020 Efficiency 1233 13 янв 2020
    Летит в закладки:cool_bun:
    Кстати получение имени ПК можно реализовать одной строкой
     
  4. r3xq1
    Я предложу свой вариант по использованию WMI с Linq и без просто в использование!
    Подключаем ссылки:
    Код
    System
    System.Data
    System.Management
    Код
    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);
    }
    }
    }
    Код
    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
    Код
    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;
    }
    }
    }
    Код
    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;
    }
    }
    }
    Код
    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
     
    9 окт 2020 Изменено
  5. Yotic
    Yotic 14 янв 2021 Ебашу на C# всё что захотите(Разноцветное) 43 13 янв 2021
    Получение имени машины можно заменить одной строчкой
    ```
    Environment.MachineName
    ```
     
  6. shadowmind
    shadowmind 14 авг 2024 20 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");
     
    14 авг 2024 Изменено
Top