Вообще говоря, вам необходимо идентифицировать комбинацию компонентов и понимать, что компоненты могут и будут меняться со временем. Вам нужны алгоритмы допуска, чтобы сделать обоснованное предположение о том, когда изменение представляет собой обновление для машины, которую вы ранее идентифицировали, или новой машины, которую вы раньше не видели.
Простым подходом было бы перечислить все перечисленные вами компоненты, когда вам нужно определить, с какой машиной вы имеете дело, и сравнить с предыдущими снимками машин, которые вы видели ранее. Если что-то с серийным номером совпадает, вы можете с уверенностью предположить, что имеете дело с той же машиной (хотя, конечно, возможно, что кто-то перенес жесткий диск на новую машину ... но тогда это простой подход. Эвристика коммерческого уровня намного сложнее).
Использование этого подхода специально для активации программного обеспечения защищено патентом, который активно применяется, поэтому будьте осторожны с тем, что вы делаете. Если вы действительно хотите сделать это для защиты своего программного обеспечения, возможно, лучше использовать коммерческое решение. Некоторые вполне доступны. Google "активация программного обеспечения" для вариантов.
Вот несколько ссылок для получения конкретной системной информации (не все являются конкретными кулинарными книгами C, но C можно использовать в каждом случае).
Жесткий диск Windows http://www.codeproject.com/KB/cs/hard_disk_serialno.aspx < / а>
Жесткий диск Linux http://www.webmasterworld.com/forum40/957.htm
BIOS Windows http://msdn.microsoft.com/en-us/library/aa394077(v=vs.85).aspx
BIOS Linux http://www.dufault.info/blog/a-better-way-to-find-your-bios-version-in-linux/
MAC-адрес Windows C ++: получить MAC-адрес сетевых адаптеров в Vista?
MAC-адрес Linux http://www.linuxquestions.org/questions/programming-9/linux-determining-mac-address-from-c-38217/
person
Eric J.
schedule
16.09.2011