我有一个分区的路径。如何在不使用终端命令的情况下以编程方式检索该分区的 UUID?一个例子会更有帮助。
3 回答
$ diskutil info / | grep UUID
从 C 中运行它留给读者作为练习。
如果您想要根以外的分区,您可以指定挂载点或设备名称(例如,disk0s2)来代替/
.
您可以使用磁盘仲裁框架(Apple 参考)。Chris Suter在这个博客上也有一个很好的总结。
您可以使用 kDADiskDescriptionMediaUUIDKey 获取 UUID。Aaron Burghardt 在这个邮件列表线程中很好地描述了它。这是该链接的引述:
获得 DADisk 后,使用 DADiskCopyDescription 获取属性字典,您将在其中找到带有键 kDADiskDescriptionMediaUUIDKey 的 UUID(有关可能感兴趣的其他键,请参见 DADisk.h)。请注意,DADisk 是 IOMedia 对象的包装器,描述字典直接对应于 IOMedia 对象中的属性。此外,CFShow() 可用于将描述字典打印到控制台。
我认为最简单的是使用polkit
从http://polkit.googlecode.com/svn/trunk/FileSystem/DiskWatcher.h http://polkit.googlecode.com/svn/trunk/FileSystem/DiskWatcher.m下载 DiskWatcher.h 和 .m
将其添加到您的项目中(它没有 ARC,因此如果您使用 ARC,请添加 -fno-objc-arc 标志)
添加 DiskArbiratation 框架你可以使用
+ (NSString*) diskIdentifierForPath:(NSString*)path;
NSString *UUID1 = [DiskWatcher diskIdentifierForPath:@"/Volumes/Backup900GB"];