Программно получить UUID раздела диска OS X - PullRequest
4 голосов
/ 04 июля 2011

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

Ответы [ 3 ]

7 голосов
/ 15 июля 2011

$ diskutil info / | grep UUID

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

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

5 голосов
/ 16 июля 2011

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

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

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

0 голосов
/ 02 августа 2013

Я думаю, что проще всего использовать 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 Вы можете использовать

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

NSString *UUID1 = [DiskWatcher diskIdentifierForPath:@"/Volumes/Backup900GB"];
...