Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > получить идентификатор с оборудования


Автор: maxfox 14.2.2012, 17:07
 Можно ли как то получить уникальный идентификатор для текущего компьютера? К примеру, перечень хардварных устройств, их имена, модель, серийный номер, и .т.п. Т.е, какую то информацию, которая не меняется при форматировании винчестера и переустановки Windows?
Всё что я нашёл, это вот:
Код

 cli::array<System::IO::DriveInfo^>^ drvArray;
            
 drvArray = System::IO::DriveInfo::GetDrives();

 - но это данные о логических дисках. А при форматировании винчестера. Его можно разбить по другому, или оставить не размеченную область.

Автор: LOPUH 16.2.2012, 15:34
В МSDN для получения уникального ID компьютера рекомендуется использовать ID процессора:
Код

//so you are after a way to find a uniqueness of the computer it self? This then has nothing to do with Windows. you have to find another way. This could be as posted, by looking at the SerialNumber of a //harddisk or getting the Processor ID using WMI.

//add a reference to System.Management.dll

//then to get the processorID (CPUID) you can do this for example:
System.Management.ManagementClass theClass = new System.Management.ManagementClass("Win32_Processor");
System.Management.ManagementObjectCollection theCollectionOfResults = theClass.GetInstances();
 
foreach(System.Management.ManagementObject currentResult in theCollectionOfResults)
{
   MessageBox.Show(currentResult["ProcessorID"].ToString());
}


Добавлено через 5 минут и 48 секунд
А вот еще нашел как можно сгенерировать строку , содержащую  уникальный ID:
Код

public static string GetSystemInfo(string SoftwareName)
{
    if (UseProcessorID == true)

        SoftwareName += RunQuery("Processor", "ProcessorId");

    if (UseBaseBoardProduct == true)

        SoftwareName += RunQuery("BaseBoard", "Product");

    if (UseBaseBoardManufacturer == true)

        SoftwareName += RunQuery("BaseBoard", "Manufacturer");
    // See more in source code

    SoftwareName = RemoveUseLess(SoftwareName);

    if (SoftwareName.Length < 25)

        return GetSystemInfo(SoftwareName);
    return SoftwareName.Substring(0, 25).ToUpper();
}

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)