c++ - Mac OS X 中的唯一硬件 ID

标签 c++ macos unique hardware-id

Mac OS X 开发对我来说是一个相当新的事物,我正在移植一些软件。对于软件许可和注册,我需要能够生成某种硬件 ID。它不必太花哨。以太网MAC地址、硬盘序列号、CPU序列号之类的。

我已经在 Windows 上覆盖了它,但在 Mac 上我一无所知。任何关于我需要做什么的想法,或者我可以去哪里获取这方面的信息都会很棒!

编辑:

对于其他对此感兴趣的人,这是我最终与 Qt 的 QProcess 类一起使用的代码:

QProcess proc;

QStringList args;
args << "-c" << "ioreg -rd1 -c IOPlatformExpertDevice |  awk '/IOPlatformUUID/ { print $3; }'";
proc.start( "/bin/bash", args );
proc.waitForFinished();

QString uID = proc.readAll();

注意:我使用的是 C++。

最佳答案

对于 C/C++:

#include <IOKit/IOKitLib.h>

void get_platform_uuid(char * buf, int bufSize) {
    io_registry_entry_t ioRegistryRoot = IORegistryEntryFromPath(kIOMasterPortDefault, "IOService:/");
    CFStringRef uuidCf = (CFStringRef) IORegistryEntryCreateCFProperty(ioRegistryRoot, CFSTR(kIOPlatformUUIDKey), kCFAllocatorDefault, 0);
    IOObjectRelease(ioRegistryRoot);
    CFStringGetCString(uuidCf, buf, bufSize, kCFStringEncodingMacRoman);
    CFRelease(uuidCf);    
}

关于c++ - Mac OS X 中的唯一硬件 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/933460/

相关文章:

java - 如何从字符串数组中获取字符串以便与 SetText 一起使用?安卓工作室

objective-c - 日历 将事件位置存储到数组对象

arrays - 如何找到矩阵中的唯一行,每行中没有元素顺序?

r - 在R中唯一化重复的列名

c++ - 什么时候重新分配 `[in,out]` 参数是可选的?

C++ 方法变量声明

c++ - std 线程 vector 的 valgrind 输出中仍然可到达的 block

macos - 找不到符号 _OBJC_IVAR_$_NSView._layer(在 AppKit 中)仅在 10.7 上,在 10.8 和 10.9 上工作正常

javascript - 如何从 JavaScript 数组中删除重复的对象?

c++ - 在所有者绘制的列表框中禁用滚动条