如何检测OneDrive仅在线文件

问题描述 投票:3回答:2

从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”)是否为在线文件?

winapi onedrive
2个回答
3
投票

要检查“仅在线”,您只需要调用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,如下所示。


1
投票

看一下文件的PKEY_FilePlaceholderStatus属性(at the shell level,而不是文件系统级别)。 This blog post有一个你可以测试的示例程序。 This question还暗示了一些您可能想要查看的无证件属性。

微软有一个UWP example on MSDN

© www.soinside.com 2019 - 2024. All rights reserved.