簡體   English   中英

獲取MAC OS X的機器ID

[英]Get Machine id of MAC OS X

我想要機器唯一的ID,例如處理器ID,HDD ID,通過C ++程序的MAC PC的uuid。 誰能告訴我它是如何實現的? 謝謝。

僅在大約7年后,但這是對那些我們一直在使用的絆腳石的答案。

  1. 它使用IOPlatformExpertDevice類訪問Mac序列號/硬件uuid
  2. 有兩種方法可以做到這一點,第一種使用C ++,第二種使用python。 我親自使用了第二種方法,並且可以驗證它是否已獲取系統信息所提供的硬件uuid。

第一種方法,未​​經我自己測試,但使用相同的類,因此至少具有工作的潛力,有關如何檢索“序列號”的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM