【问题标题】:Programmatically retrieve an OS X disk partition UUID以编程方式检索 OS X 磁盘分区 UUID
【发布时间】:2011-07-04 05:20:52
【问题描述】:

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

【问题讨论】:

  • 这可能对你有帮助。(stackoverflow.com/questions/329925/…)
  • @iammilind :这是 MAC,一个 48 位网络地址。这似乎是 Apple Mac OSX。
  • 您的问题是 partition,但它被标记为 volume。分区的 UUID 不同于该分区中“卷”的 UUID。例如,使用@user57368 的答案:$ diskutil info /Volumes/Mulch | grep UUID ` Volume UUID: E1EAC65D-47A2-3AB3-BCE5-BA25FD2C6A30` ` Disk / Partition UUID: E24032E3-DC36-470E-86B9-C9664026F8EC`

标签: macos uuid volume diskarbitration


【解决方案1】:

$ diskutil info / | grep UUID

从 C 中运行它留给读者作为练习。

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

【讨论】:

  • 感谢终端命令。你能告诉我如何(有没有办法)只使用 c 或 c++ 而不使用终端命令来做到这一点。
【解决方案2】:

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

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

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

【讨论】:

  • 非常感谢,它真的很有帮助。
【解决方案3】:

我觉得最简单的还是用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 标志)

添加磁盘仲裁框架 你可以使用

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-28
    • 2013-06-28
    • 1970-01-01
    • 2016-12-04
    • 1970-01-01
    • 2014-08-23
    • 1970-01-01
    • 2020-12-21
    相关资源
    最近更新 更多