Ano*_*dya 5 macos cocoa objective-c uniqueidentifier
如何查找Mac OSX序列号.
有时需要获取mac的序列号,并对此进行验证.
几年前,当我为OsiriX开发插件时,我需要同样的东西.我被要求以这种方式发布它,只有少数系统可以使用该插件.
如果我们得到比这更好的解决方案,这将对我们所有人都非常有帮助.
Mar*_*n R 18
以下代码主要从技术说明TN1103中复制,只需稍加修改即可返回 NSString并使用ARC进行编译:
#include <IOKit/IOKitLib.h>
- (NSString *)getSerialNumber
{
NSString *serial = nil;
io_service_t platformExpert = IOServiceGetMatchingService(kIOMasterPortDefault,
IOServiceMatching("IOPlatformExpertDevice"));
if (platformExpert) {
CFTypeRef serialNumberAsCFString =
IORegistryEntryCreateCFProperty(platformExpert,
CFSTR(kIOPlatformSerialNumberKey),
kCFAllocatorDefault, 0);
if (serialNumberAsCFString) {
serial = CFBridgingRelease(serialNumberAsCFString);
}
IOObjectRelease(platformExpert);
}
return serial;
}
Run Code Online (Sandbox Code Playgroud)
您必须将IOKit.framework添加到您的构建设置中.
这是解决方案的 Swift 版本:
var serialNumber: String? {
let platformExpert = IOServiceGetMatchingService(kIOMasterPortDefault, IOServiceMatching("IOPlatformExpertDevice") )
guard platformExpert > 0 else {
return nil
}
guard let serialNumber = (IORegistryEntryCreateCFProperty(platformExpert, kIOPlatformSerialNumberKey as CFString, kCFAllocatorDefault, 0).takeUnretainedValue() as? String) else {
return nil
}
IOObjectRelease(platformExpert)
return serialNumber
}
Run Code Online (Sandbox Code Playgroud)