以编程方式检索OS X磁盘分区UUID

时间:2011-07-04 05:20:52

标签: macos uuid volume diskarbitration

我有一个分区的路径。如何在不使用终端命令的情况下以编程方式检索该分区的UUID?一个例子会更有帮助。

3 个答案:

答案 0 :(得分:7)

$ diskutil info / | grep UUID

从C中运行此作为读者的练习。

如果您想要除根之外的分区,您可以指定安装点或设备名称(例如disk0s2)来代替/

答案 1 :(得分:5)

您可以使用磁盘仲裁框架(Apple reference)。 Chris Suter在blog处有一个很好的总结。

您可以使用kDADiskDescriptionMediaUUIDKey获取UUID。 Aaron Burghardt在这个邮件列表thread中很好地描述了它。以下是该链接的引用:

  

获得DADisk后,使用DADiskCopyDescription获取属性字典,您将在其中获取   使用密钥kDADiskDescriptionMediaUUIDKey查找UUID(有关其他可能的密钥,请参阅DADisk.h)   利益)。注意,DADisk是IOMedia对象和描述字典的包装器   直接对应于IOMedia对象中的属性。此外,CFShow()对于打印也很有用   描述字典到控制台。

答案 2 :(得分:0)

我认为最简单的方法是使用 polkit

从中下载DiskWatcher.h和.m http://polkit.googlecode.com/svn/trunk/FileSystem/DiskWatcher.h http://polkit.googlecode.com/svn/trunk/FileSystem/DiskWatcher.m

将其添加到您的项目中(它没有ARC,因此如果您使用ARC则添加-fno-objc-arc标志)

添加DiskArbiratation框架 你可以使用

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

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