Microsoft OneDrive позволяет хранить файлы локально, удаленно или обоими способами.Это определяется новыми атрибутами файлов, которые появились в Windows 10:
FILE_ATTRIBUTE_PINNED 0x00080000
FILE_ATTRIBUTE_UNPINNED 0x00100000
FILE_ATTRIBUTE_RECALL_ON_OPEN 0x00040000
FILE_ATTRIBUTE_RECALL_ON_DATA_ACCESS 0x00400000
, а также некоторыми атрибутами файлов, унаследованными от предыдущих версий Windows:
FILE_ATTRIBUTE_SPARSE_FILE 0x00000200
FILE_ATTRIBUTE_REPARSE_POINT 0x00000400
FILE_ATTRIBUTE_OFFLINE 0x00001000
Проблема в том, что я не могунайдите способ получить эти новые атрибуты файла через Win32 API или NT Native API.Я уже пробовал:
GetFileAttributes()
FindFirstFile()
NtQueryAttributesFile()
Для файла OneDrive, который был задан для хранения всегда удаленно, все эти методы возвращают 0x00500020, в то время как истинные атрибуты - 0x00501620 (REPARSE_POINT, SPARSE_FILE и OFFLINE маскируются).Истинные атрибуты файла можно получить с помощью следующей команды PowerShell:
[Convert]::ToString( (Get-ItemProperty -Path 'C:\Users\username\OneDrive\test.txt').Attributes.Value__, 16 )
attrib.exe
Системная команда также может отображать некоторые из этих новых атрибутов файла, связанных с OneDrive (O
для автономного режима, U
для не закрепленного, P
для закрепленного).
Есть ли способ получить эти атрибуты файла в моем программном обеспечении?Может мне нужно что-то добавить к манифесту?