在Mac OS X中仅使用给定文件路径以编程方式安装磁盘/卷

时间:2012-11-16 23:45:38

标签: c++ macos mount diskarbitration

我有一个文件路径列表。这些路径可能会导致未安装的卷上的文件。在尝试访问文件之前,如何以编程方式告诉操作系统安装卷?

我知道这可能是某种方式,因为iTunes似乎这样做了。例如,如果我开始播放位于iTunes中未安装的网络附加卷上的歌曲,则会自动为我安装音量。

如果我尝试以指定路径以编程方式打开文件,操作系统是否应该自动为我安装卷?或者我是否需要使用磁盘仲裁框架或类似方法手动安装驱动器?

如果我需要使用磁盘仲裁框架,具体需要做什么?

2 个答案:

答案 0 :(得分:3)

简短回答:无需搞乱“磁盘仲裁框架”。 Alias Manager可以为您完成所有操作。

Chris Suter已经非常接近了。 API智能有两种解决方案:

  1. 别名。那些已存在于OSX之前的MacOS中的结构化文件包含多种查找文件或文件夹的方法,即使它已被移动或重命名。它们还包含有关其所在卷的信息,包括如果它位于网络卷上的信息。如果只是创建文件的别名(使用文件菜单中的Finder的“制作别名”命令),然后重命名或移动它,或者卸载其卷,您可以自己查看这些操作。 Finder将尝试将卷恢复,甚至要求您在必要时提供登录信息。还有“Alias Manager”API,包括函数FSResolveAliasFileWithMountFlags,这正是您所要求的:它不仅可以让您找到别名的目标,还可以选择是否在未安装磁盘时使磁盘可用,以及如有必要,应要求用户登录。

  2. CFURL Bookmarks。这是Alias API的现代替代品,仅在OSX 10.6之后才存在。 CFURL书签在运行时由系统更好地管理。我不知道他们是否有一个等效的磁盘文件表示,如经典的Alias文件,但也许它们甚至是相同的。

  3. 无论如何,我希望这些都是你需要的所有指针。

答案 1 :(得分:1)

您是否尝试过使用别名?我认为它们现在被称为书签。当你解决它们时,它们可能会导致安装卷。