我想将 GUID 与我的 StorageFile 相关联,以便更轻松地测试两个文件是否来自同一源。
我正在尝试将 GUID 保存在文件属性中:
private static string GuidProperty = "System.Comment"; // also tried "System.Subject".
static public async Task<Guid> GetGuidAsync( StorageFile file)
{
var properties = await file.Properties.RetrievePropertiesAsync(new string[] { GuidProperty });
if (!(properties[GuidProperty] is string guidString)) {
throw new InvalidOperationException("Missing GUID on file.");
}
return new Guid(guidString);
}
static public async Task InitializeGuidAsync( StorageFile file)
{
var properties = await file.Properties.RetrievePropertiesAsync(new string[] { GuidProperty });
properties[GuidProperty] = Guid.NewGuid().ToString();
await file.Properties.SavePropertiesAsync(properties);
}
这行不通。当它到达 SavePropertiesAsync 时,它会抛出一个 COMException,说“错误 HRESULT E_FAIL 已从对 COM 组件的调用中返回”。
该文件是 app 目录中的 SQLite 数据库,具有自定义文件扩展名。
如何使用 GUID 标记此文件?
PS 经过一番摸索......也许问题是我没有为自定义文件类型注册文件属性处理程序。还不知道该怎么做。