[英]Is there a reliable way to know a volume is a time machine volume when using the disk arbitration framework?
我正在開發OSX應用程序,該應用程序除其他外還顯示已安裝的卷(顯示/消失)。 我使用磁盤仲裁框架來做到這一點。 當我將計算機連接到已配置為時間機器備份的網絡驅動器時,將出現一個名稱為“ timemachine”的卷,即出現的設備的CFDictionary是這樣的:
{DAVolumeMountable = true,DAVolumeNetwork = true,DAVolumeName = timemachine,DAVolumePath = file:// localhost / Volumes / timemachine /,DAVolumeKind = afpfs}
我不希望該卷顯示在應用程序的UI中。 我可以使用什么標准來知道這確實是一個時間機器量,將其排除在外? 僅使用名稱或路徑似乎很奇怪。 從理論上講,格式化為名稱為“ timemachine”的驅動器是否不會安裝在相同的名稱/路徑下?
任何建議表示贊賞。
我找不到識別Time Machine卷的API。 您可以使用destinationinfo
動詞調出tmutil
程序。 我還可以在Time Machine卷上看到諸如“ .com.apple.timemachine.donotpresent”之類的文件,盡管這依賴於未記錄的實現細節。
順便說一句,用戶仍然可以正常使用Time Machine音量。 至少有一個本地人可以。 他們可以瀏覽到該文件,並在其上備份其他文件。 顯然,他們不應該在驅動器發生故障的情況下放任何東西,以免丟失。
如果只想顯示與Finder中存在的卷相同的卷,則建議使用NSWorkspace
及其NSWorkspaceDidMountNotification
和NSWorkspaceWillUnmountNotification
通知來了解何時安裝和卸載卷。 與NSVolumeEnumerationSkipHiddenVolumes
一起使用-[NSFileManager mountedVolumeURLsIncludingResourceValuesForKeys:options:]
。 您可能也想將-getResourceValue:forKey:error:
與NSURLVolumeIsBrowsableKey
一起使用,因為我不確定non-browsable是否與hidden是同義詞。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.