Я предполагаю, что вы хотите сгенерировать уникальный идентификатор машины. Жесткий диск, вероятно, самый простой подход, потому что другое оборудование слишком разнородно, чтобы иметь определенный способ получения их серийных номеров.
Вероятно, проще всего использовать число, которое Windows генерирует для жесткого диска.
Вы можете найти его в HKEY_LOCAL_MACHINE \ SYSTEM \ MountingDevices
и имя ключа \ DosDevices \ C: (при условии, что диск C: является основным системным диском - что не так в некоторых очень редких случаях, но затем вы можете проверить, что такое системный диск, и использовать соответствующий ключ ).
Существует еще один номер, связанный с жесткими дисками, который называется UUID, и вы можете найти сценарии для его получения. Например: http://www.windowsnetworking.com/articles_tutorials/Deploying-Windows-7-Part18.html для Windows. Или http://blog.granneman.com/2007/07/26/find-out-a-hard-drives-uuid/ для Linux.
Я также нашел эту статью о получении серийного номера материнской платы: Получение уникального идентификационного номера материнской платы через программирование на vc ++