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

发布于 2024-11-18 13:57:22 字数 58 浏览 3 评论 0原文

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

I have a path to a partition. How can I retrieve UUID of that partition programatically without using terminal commands? An example will be more helpful.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

古镇旧梦 2024-11-25 13:57:22

$ diskutil 信息 / | grep UUID

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

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

$ diskutil info / | grep UUID

Running this from C is left as an exercise for the reader.

If you want a partition other than the root, you can specify the mount point or device name (eg. disk0s2) in place of /.

蘑菇王子 2024-11-25 13:57:22

您可以使用磁盘仲裁框架(Apple 参考)。 Chris Suter 的博客上也有一个很好的总结。

您可以使用 kDADiskDescriptionMediaUUIDKey 获取 UUID。 Aaron Burghardt 在此邮件列表线程中对此进行了很好的描述。这是该链接的引用:

一旦您拥有 DADisk,请使用 DADiskCopyDescription 获取属性字典,您将在其中
找到带有键 kDADiskDescriptionMediaUUIDKey 的 UUID(有关其他可能的键,请参阅 DADisk.h
兴趣)。注意,DADisk 是 IOMedia 对象和描述字典的包装器
直接对应于 IOMedia 对象中的属性。此外,CFShow() 对于打印
描述字典到控制台。

You can use the Disk Arbitration framework (Apple reference). There is also a good summary at this blog by Chris Suter.

You can get the UUID by using the kDADiskDescriptionMediaUUIDKey. Aaron Burghardt described it well in this mailing list thread. Here is a quote from that link:

Once you have the DADisk, use DADiskCopyDescription to get a dictionary of properties, in which you will
find the UUID with the key kDADiskDescriptionMediaUUIDKey (see DADisk.h for other keys that may be of
interest). Note, a DADisk is a wrapper around an IOMedia object and the description dictionary
corresponds directly to the properties in the IOMedia object. Also, CFShow() is useful for printing the
description dictionary to the console.

写给空气的情书 2024-11-25 13:57:22

我认为最简单的是使用 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"];

I think the easiest is to use polkit

Download the DiskWatcher.h and .m from
http://polkit.googlecode.com/svn/trunk/FileSystem/DiskWatcher.h
http://polkit.googlecode.com/svn/trunk/FileSystem/DiskWatcher.m

Add it to your project (It has no ARC so add -fno-objc-arc flag if you use ARC)

Add DiskArbiratation framework
You can use

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

NSString *UUID1 = [DiskWatcher diskIdentifierForPath:@"/Volumes/Backup900GB"];
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文