1

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

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

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

任何建议表示赞赏。

4

1 回答 1

0

我没有找到识别 Time Machine 卷的 API。你可以用动词来调用tmutil程序。destinationinfo我还在我的 Time Machine 卷上看到了诸如“.com.apple.timemachine.donotpresent”之类的文件,尽管这依赖于未记录的实现细节。

顺便说一句,用户仍然可以正常使用 Time Machine 卷。至少本地一个可以。他们可以浏览它并将除备份之外的其他文件放在上面。显然,他们不应该放任何东西,如果驱动器发生故障,他们会后悔丢失。

如果您只想显示与 Finder 中相同的卷,我建议您使用NSWorkspace它的NSWorkspaceDidMountNotificationNSWorkspaceWillUnmountNotification通知来了解何时安装和卸载卷。-[NSFileManager mountedVolumeURLsIncludingResourceValuesForKeys:options:]与 一起使用NSVolumeEnumerationSkipHiddenVolumes。您可能也想使用-getResourceValue:forKey:error:with NSURLVolumeIsBrowsableKey,因为我不确定 non-browsable 是 hidden 的同义词。

于 2014-05-31T14:51:32.320 回答