[英]Get Machine id of MAC OS X
我想要機器唯一的ID,例如處理器ID,HDD ID,通過C ++程序的MAC PC的uuid。 誰能告訴我它是如何實現的? 謝謝。
僅在大約7年后,但這是對那些我們一直在使用的絆腳石的答案。
第一種方法,未經我自己測試,但使用相同的類,因此至少具有工作的潛力,有關如何檢索“序列號”的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/以及有關I / O Kit的更多信息中了解ioreg-> https://developer.apple.com/library/archive/文檔/ DeviceDrivers /概念/IOKitFundamentals/Families_Ref/Families_Ref.html#//apple_ref/doc/uid/TP0000021-BABHIGFE
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]
在一些古老的處理器之外,x86 CPU沒有軟件可見的序列號。
Apple建議您使用計算機主要網絡接口(即,板載以太網控制器(如果存在)或無線接口,否則為無線接口)的MAC地址作為系統的唯一標識符。 Apple的“ 驗證Mac App Store收據”文檔(在“獲取計算機的GUID”下)中提供了執行此操作的示例代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.