从Windows 10 Fall Creators Update(版本16299.15)和OneDrive build 17.3.7064.1005开始,按需文件可供用户使用(https://support.office.com/en-us/article/learn-about-onedrive-files-on-demand-0e6860d3-d9f3-4971-b321-7092438fb38e)
现在,任何OneDrive文件都可以具有以下类型之一:仅在线,本地可用且始终可用。
使用WinAPI我如何知道该文件(例如“C:\ Users \ Username \ OneDrive \ Getting One with OneDrive.pdf”)是否为在线文件?
要检查“仅在线”,您只需要调用GetFileAttributes()
并查看是否设置了FILE_ATTRIBUTE_OFFLINE
属性。
事实上,这对于OneDrive来说并不新鲜,该属性已经存在了很长时间。
通过shell可以获得其他OneDrive属性(虽然您需要的属性是PKEY_StorageProviderState
而不是PKEY_FilePlaceholderStatus
)但是“仅在线”很容易检查。
编辑:另一个文件系统属性,FILE_ATTRIBUTE_PINNED
是Windows 10的新增属性,并由OneDrive用于指示“始终可用”的文件。
编辑:截至2019年,似乎OneDrive现在使用FILE_ATTRIBUTE_RECALL_ON_DATA_ACCESS
而不是FILE_ATTRIBUTE_OFFLINE
,如下所示。
看一下文件的PKEY_FilePlaceholderStatus
属性(at the shell level,而不是文件系统级别)。 This blog post有一个你可以测试的示例程序。 This question还暗示了一些您可能想要查看的无证件属性。
微软有一个UWP example on MSDN。