Я делал это несколько раз для лицензирования проектов. Для серийного номера жесткого диска используйте:
private static extern long GetVolumeInformation(string PathName, StringBuilder VolumeNameBuffer, UInt32 VolumeNameSize, ref UInt32 VolumeSerialNumber, ref UInt32 MaximumComponentLength, ref UInt32 FileSystemFlags, StringBuilder FileSystemNameBuffer, UInt32 FileSystemNameSize);
Используйте VolumeSerialNumber
, который возвращается функцией.
Кроме того, вы могли подумать об использовании идентификатора продукта Windows (расположен по адресу HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\DigitalProductId
). Будьте осторожны, большое количество пользователей Windows XP имеют пиратские копии и используют одни и те же ключи продукта.