Программно получить UUID раздела диска OS X

У меня есть путь к разделу. Как я могу получить UUID этого раздела программно без использования команд терминала? Пример будет более полезным.

3 ответа

Решение

Вы можете использовать инфраструктуру Disk Arbitration ( ссылка Apple). В этом блоге также есть хорошее резюме Криса Сутера.

Вы можете получить UUID с помощью kDADiskDescriptionMediaUUIDKey. Аарон Бургхардт хорошо описал это в этой ветке списка рассылки. Вот цитата из этой ссылки:

Получив DADisk, используйте DADiskCopyDescription, чтобы получить словарь свойств, в котором вы найдете UUID с ключом kDADiskDescriptionMediaUUIDKey (другие ключи, которые могут представлять интерес, см. В DADisk.h). Обратите внимание, что DADisk - это оболочка вокруг объекта IOMedia, а словарь описания напрямую соответствует свойствам объекта IOMedia. Кроме того, CFShow() полезен для печати словаря описания на консоли.

$ diskutil info / | grep UUID

Запуск этого из C оставлен в качестве упражнения для читателя.

Если вы хотите раздел, отличный от корневого, вы можете указать точку монтирования или имя устройства (например, disk0s2) вместо /,

Я думаю, что проще всего использовать Polkit

Загрузите DiskWatcher.h и.m с http://polkit.googlecode.com/svn/trunk/FileSystem/DiskWatcher.h http://polkit.googlecode.com/svn/trunk/FileSystem/DiskWatcher.m

Добавьте его в свой проект (у него нет ARC, поэтому добавьте флаг -fno-objc-arc, если вы используете ARC)

Добавить DiskArbiratation Framework Вы можете использовать

+ (NSString*) diskIdentifierForPath:(NSString*)path;

NSString *UUID1 = [DiskWatcher diskIdentifierForPath:@"/Volumes/Backup900GB"];
Другие вопросы по тегам