我想通过c ++程序获得机器唯一ID,例如MAC PC的处理器ID,hdd id,uuid。 谁能告诉我它是如何实现的? 感谢。
答案 0 :(得分:0)
仅在大约7年后,但这是对那些我们一直在使用的绊脚石的答案。
第一种方法,未经我自己测试,但使用相同的类,因此至少具有工作的潜力,有关如何检索“序列号”(不是C ++)的C ++例程,请参见https://gist.github.com/tmiz/1294978。与系统信息中的硬件uuid相同,但是通过一些调整,您应该能够获得硬件uuid。
第二种方法(请参见下面的python代码),在python中,它使用ioreg命令,该命令是通过单独的进程执行的,然后使用正则表达式处理结果以获取uuid。正如我在macOS 10.14中的“系统信息”应用程序以及10.13和10.12的早期版本中检查的那样,此方法肯定会检索硬件uuid。
也许这些方法对您有用,它们不会返回mac地址,因此应该可以很好地用作计算机的uuid,而不仅仅是网络接口。
最后,您可以在这里-> http://www.manpagez.com/man/8/ioreg/阅读有关ioreg的信息,而在这里-> https://developer.apple.com/library/archive/documentation/DeviceDrivers/Conceptual/IOKitFundamentals/Families_Ref/Families_Ref.html#//apple_ref/doc/uid/TP0000021-BABHIGFE
可以更全面地了解I / O套件。import platform, re, os
os_type = platform.system()
if os_type == 'Darwin':
machine_uuid_str = ''
p = os.popen('ioreg -rd1 -c IOPlatformExpertDevice | grep -E \'(UUID)\'', "r")
while 1:
line = p.readline()
if not line: break
machine_uuid_str += line
match_obj = re.compile('[A-Z,0-9]{8,8}-' +\
'[A-Z,0-9]{4,4}-' +\
'[A-Z,0-9]{4,4}-' +\
'[A-Z,0-9]{4,4}-' +\
'[A-Z,0-9]{12,12}')
results = match_obj.findall(machine_uuid_str)
return results[0]
答案 1 :(得分:-1)
在一些古老的处理器之外,x86 CPU没有软件可见的序列号。
Apple建议您使用计算机主网络接口的MAC地址(即板载以太网控制器,如果存在,或者使用无线接口)作为系统的唯一标识符。执行此操作的示例代码可在Apple的Validating Mac App Store Receipts文档中找到(在“获取计算机的GUID”下)。