在使用磁盘仲裁框架时,是否有可靠的方法来了解卷是时间机器卷?

时间:2014-05-31 11:43:55

标签: macos diskarbitration

我正在开发一个OSX应用程序,其中包括显示/消失的已装入卷。我使用磁盘仲裁框架。当我将计算机连接到我已配置为我的时间机器备份的网络驱动器时,会出现一个名为“timemachine”的卷,即出现的设备的CFDictionary是这样的:

{DAVolumeMountable = true,DAVolumeNetwork = true,DAVolumeName = timemachine,DAVolumePath = file:// localhost / Volumes / timemachine /,DAVolumeKind = afpfs}

我不希望此卷出现在我的应用程序的UI中。我可以使用什么标准来了解它实际上是一个排除它的时间机器量?只是使用名称或路径似乎很奇怪。理论上,格式化为名称为“timemachine”的驱动器不会安装在相同的名称/路径下吗?

任何建议表示赞赏。

1 个答案:

答案 0 :(得分:0)

我找不到标识Time Machine卷的API。您可以使用destinationinfo动词呼叫tmutil程序。我还在我的Time Machine卷上看到诸如“.com.apple.timemachine.donotpresent”之类的文件,尽管这依赖于未记录的实现细节。

顺便说一下,用户仍然可以正常使用Time Machine卷。至少本地人可以。他们可以浏览它并在其备份之外放置其他文件。显然,他们不应该在那里放任何东西,如果驱动器发生故障他们会很遗憾。

如果您只想显示与Finder中相同的卷,我建议您使用NSWorkspace及其NSWorkspaceDidMountNotificationNSWorkspaceWillUnmountNotification通知来了解何时装入和卸载卷。将-[NSFileManager mountedVolumeURLsIncludingResourceValuesForKeys:options:]NSVolumeEnumerationSkipHiddenVolumes一起使用。您也可以将-getResourceValue:forKey:error:NSURLVolumeIsBrowsableKey一起使用,因为我不确定不可浏览是否与隐藏同义。