C# 文件系统上存储文件的uwp唯一标识符

C# 文件系统上存储文件的uwp唯一标识符,c#,properties,uwp,storagefile,video-library,C#,Properties,Uwp,Storagefile,Video Library,我打算使用KnownFolders.VideosLibrary和FutureAccessList跟踪文件系统视频文件(这可以让我访问视频库之外的项目) 我想保存一些有关我的应用程序中使用的每个StorageFile对象的数据。因此,首先我想到使用SavePropertiesAsync方法来保存存储文件属性上的元数据,这样即使文件移动到系统中的其他位置,或者如果被删除,我也可以访问它们futureaccesslist将自动将其从自身中删除。但我在SavePropertiesAsync()方法上遇到

我打算使用
KnownFolders.VideosLibrary
FutureAccessList
跟踪文件系统视频文件(这可以让我访问视频库之外的项目)

我想保存一些有关我的应用程序中使用的每个
StorageFile
对象的数据。因此,首先我想到使用
SavePropertiesAsync
方法来保存存储文件属性上的元数据,这样即使文件移动到系统中的其他位置,或者如果被删除,我也可以访问它们futureaccesslist将自动将其从自身中删除。但我在
SavePropertiesAsync()
方法上遇到访问被拒绝异常。是的,我正在我的应用程序中使用
VideoLibrary
功能,我正在
KnownFolder.VideoLibrary
中的文件上尝试此方法

既然saveProperties不起作用,我想在我的应用程序中创建一个数据库,并使用
StorageFile
FolderRelativeId
跟踪数据,并根据该属性跟踪数据,因为即使名称相同,每个文件的数据也是唯一的。此场景中唯一的限制是,当文件在文件系统中移动时,与文件夹相关的id会发生变化,这无法通知我的应用程序(除非它正在运行,所以我可能会使用
StorageLibraryTracker
api)。如果文件被删除了,我也不会知道

因此,总结一下
StorageFile
对象上的属性是什么,我可以使用它在我的文件和该特定视频文件之间同步任何自定义元数据,显然该属性对于该文件应该保持不变,而不管它在文件系统中移动到哪里

但我在savepropertiesasync()方法上遇到访问被拒绝异常

如果启用了
VideoLibrary
功能,则此方法不应引发此异常。检查您的代码段是否正确,例如:

StorageFolder videofolder = KnownFolders.VideosLibrary;
StorageFile onefile = await videofolder.GetFileAsync("xxx.mp3"); 
VideoProperties properties = await onefile.Properties.GetVideoPropertiesAsync();
properties.Subtitle = "track01";
await properties.SavePropertiesAsync();
如果启用了正确的代码段和功能,仍然会出现
拒绝访问
异常,原因应该是特殊文件设置为只读属性。请右键单击该文件并选择
属性
,查看
属性
,以进行检查

除非它正在运行,否则我可能会使用StorageLibraryTracker api


如您所知,您可以使用相对API来跟踪文件更改。跟踪应用程序运行时应满足您要求的更改。但是,当应用程序不是通过后台任务运行时,你甚至可以知道这些变化。您可以注册一个,当发生更改时,它将触发后台任务

您是通过查找文件名来获取文件的,而在我的场景中,我是通过“QueryOptions Result.GetFileAsync()”获取文件的,这可能是我出错的原因吗@吴荪婷-MSFT@touseef,不,这只是获取
StorageFile
对象的另一种方式,不会导致异常。请检查文件是否如我在回复中提到的那样是只读的。是的,我刚刚检查了它,我可以确认引发异常的文件不是只读的。这是我的库中的第一个文件,我甚至在filepicker仍然得到以下信息的情况下尝试了:System.UnauthorizedAccessException:'访问被拒绝。(HRESULT:0x80070005(E_ACCESSDENIED)的异常)“@touseef,在这种情况下,还请检查文件夹是否为只读。如果您仍然有问题,请提供一个,我们将测试它在我们这边。