Как получить 'IOPlatformUUID' на OS X 10.4? - PullRequest
1 голос
/ 31 марта 2011

Мне нужно получить значение UUID на 10.4, но команда, кажется, здесь не поддерживается.

ioreg -rd1 -c IOPlatformExpertDevice | awk '/IOPlatformUUID/ { split($0, line, "\""); printf("%s\n", line[4]); }'

Выше команда работает нормально на 10.5.Разве это не поддерживается на 10.4?

Также я пытаюсь получить UUID, используя приведенный ниже код на 10.4, который также не работает:

void vlm_getSystemUUID_MAC(char * uuid, int bufSize)
{
    io_registry_entry_t ioRegistryRoot = IORegistryEntryFromPath(kIOMasterPortDefault, "IOService:/");
    CFStringRef uuidCf = (CFStringRef) IORegistryEntryCreateCFProperty(ioRegistryRoot, CFSTR(kIOPlatformUUIDKey), kCFAllocatorDefault, 0);
    IOObjectRelease(ioRegistryRoot);
    CFStringGetCString(uuidCf, uuid, bufSize, kCFStringEncodingMacRoman);
    CFRelease(uuidCf);
}

И вышеуказанный код хорошо работает на 10.5.

Любая помощь будет оценена.

1 Ответ

0 голосов
/ 13 декабря 2011

Я считаю, что IOPlatformUUID был впервые добавлен в Mac OS X 10.5 Leopard и не был доступен в предыдущих версиях (кто-то, пожалуйста, исправьте меня, если я ошибаюсь). В этом блоге намекает, что это изменение было добавлено в 10.5.

Чтобы идентифицировать Mac с Mac OS X 10.4 и более ранними версиями, вам придется использовать либо IOPlatformSerialNumber и / или встроенный MAC-адрес. См. Это для деталей и предостережений: http://developer.apple.com/library/mac/#technotes/tn1103/_index.html

...