我有一个分区的路径。如何在不使用终端命令的情况下以编程方式检索该分区的UUID?一个例子会更有帮助。
答案 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"];