我想通過代碼唯一識別我的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