2012-03-27 2 views
0

я имею throuble в то время как я должен генерировать уникальный идентификатор для ПК с моей WinForm приложения C#Сформировать уникальный идентификатор (отпечатки пальцев) для ПК .Net

Большинство проблем приходит из виртуальной машины. Я использую это code.

Даже если я прокомментирую код CPUID, он меняет каждый раз, когда я перезапускаю виртуальную машину (VirtualBox).

Как можно использовать уникальный отпечаток пальца, учитывая, что я тоже могу использовать виртуальную машину?

Благодаря

+0

Почему бы не использовать MAC-адрес? См. Http://stackoverflow.com/questions/9544018/get-mac-address-of-computer – Diego

ответ

0

Это решение имеет некоторые потенциальные предостережений, но вы можете использовать либо МАС-адрес или серийный номер жесткого диска, или оба:

Вот код, чтобы получить MAC-адрес:

/// <summary> 
/// returns the mac address of the first operation nic found. 
/// </summary> 
/// <returns></returns> 
private string GetMacAddress() 
{ 
    string macAddresses = ""; 

    foreach (NetworkInterface nic in NetworkInterface.GetAllNetworkInterfaces()) 
    { 
     if (nic.OperationalStatus == OperationalStatus.Up) 
     { 
      macAddresses += nic.GetPhysicalAddress().ToString(); 
      break; 
     } 
    } 
    return macAddresses; 
} 

Вот код, чтобы получить серийный номер жесткого диска:

using System.Management; 

public string GetHDDSerial() 
{ 
    ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMedia");  
    ManagementObjectCollection managementObjects = searcher.Get(); 

    foreach (ManagementObject obj in managementObjects) 
    { 
     if (obj["SerialNumber"] != null) 
      return obj["SerialNumber"].ToString(); 
    } 

    return string.Empty; 
}