Mac OSX のシリアル番号を見つける方法。
場合によっては、Mac のシリアル番号を取得する必要があり、それを検証します。
数年前にOsiriXのプラグインを開発したときと同じものが必要でした。そのような方法でリリースするように依頼されましたが、そのプラグインを使用できるシステムはごくわずかです。
これよりも優れた解決策が得られれば、それは私たち全員にとって非常に役立つでしょう.
Mac OSX のシリアル番号を見つける方法。
場合によっては、Mac のシリアル番号を取得する必要があり、それを検証します。
数年前にOsiriXのプラグインを開発したときと同じものが必要でした。そのような方法でリリースするように依頼されましたが、そのプラグインを使用できるシステムはごくわずかです。
これよりも優れた解決策が得られれば、それは私たち全員にとって非常に役立つでしょう.
次のコードは、主にテクニカルノートTN1103NSString
からコピーされていますが、を返し、 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;
}
ビルド設定に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
}