objective-cmacoscocoauniqueidentifier

Find Mac OSX serial number


How to find the Mac OSX serial number.

Sometimes it is required to get serial number of a mac, and you validate on that.

I needed the same, few years back, when I developed a plugin for OsiriX. I was asked to release it in such a way, only few systems can use that plugin.

If we get any better solution than this, that will be quite helpful for all of us.


Solution

  • The following code is mainly copied from Technical Note TN1103, with small modifications to return an NSString and to make it compile with 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;
    }
    

    You have to add the IOKit.framework to your build settings.