我想通过代码唯一识别我的mac系统。我在“关于此Mac”中找到硬件UUID。 因此,如何以编程方式访问MAc OS X中的唯一uuid。如何识别唯一的Mac系统
如果对我的问题有任何其他建议,请提供给我。
我想通过代码唯一识别我的mac系统。我在“关于此Mac”中找到硬件UUID。 因此,如何以编程方式访问MAc OS X中的唯一uuid。如何识别唯一的Mac系统
如果对我的问题有任何其他建议,请提供给我。
从这里:https://stackoverflow.com/a/2754563/610351
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);
}
你可以用一个简单的转换来的NSString更换CFStringGetCString *。
所以,如果你不关心新的AppStore规则等..在这里你去:
- (NSString *)getSystemUUID {
io_service_t platformExpert = IOServiceGetMatchingService(kIOMasterPortDefault,IOServiceMatching("IOPlatformExpertDevice"));
if (!platformExpert)
return nil;
CFTypeRef serialNumberAsCFString = IORegistryEntryCreateCFProperty(platformExpert,CFSTR(kIOPlatformUUIDKey),kCFAllocatorDefault, 0);
IOObjectRelease(platformExpert);
if (!serialNumberAsCFString)
return nil;
return (__bridge NSString *)(serialNumberAsCFString);;
}
请注意:
IOKit.framework
到您的项目为了这个 工作。nil
NSString
;
''IOObjectRelease(platformExpert);'也可以在'!serialNumberAsCFString'块中调用吗?只读代码,这似乎是必要的。 –
@DJS是的,你有一个好点。我做了一个修改来解决这个问题。 – TCB13
如果我们关心新的AppStore规则会怎样? – tofutim