我想通过代码唯一地识别我的 mac 系统。我在关于这台 Mac 中找到了硬件 UUID。那么如何以编程方式从 MAC OS X 访问唯一的 uuid。
如果对我的问题有任何替代建议,请提供给我。
我想通过代码唯一地识别我的 mac 系统。我在关于这台 Mac 中找到了硬件 UUID。那么如何以编程方式从 MAC OS X 访问唯一的 uuid。
如果对我的问题有任何替代建议,请提供给我。
所以,如果你不关心新的 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
如果出现问题它会返回一个;从这里: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);
}
您可以将 CFStringGetCString 替换为对 NSString* 的简单转换。