在 uwp 中保存 System.Comment 或 System.Subject 文件属性
Saving System.Comment or System.Subject file properties in uwp
我想将 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 说 "Error HRESULT E_FAIL as been returned from a call to a COM component."
该文件是应用程序目录中的 SQLite 数据库,具有自定义文件扩展名。
如何使用 GUID 标记此文件?
P.S。经过一番摸索……也许问题是我没有为自定义文件类型注册文件 属性 处理程序。还不确定该怎么做。
问题是自定义文件类型不支持存储属性。
属性存储在文件中,由 Windows 10 使用您实现的 属性 处理程序写入和读取。
下一页讨论 Windows 10 中的属性:https://msdn.microsoft.com/en-us/library/windows/desktop/bb776859(v=vs.85).aspx
关于使用 SQLite 作为文档格式,不幸的是,SQLite 文件只能在应用程序目录中访问。因此,支持文件属性的效率非常低,因为读取或写入 属性 需要将文件复制到应用程序目录并返回。
我想将 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 说 "Error HRESULT E_FAIL as been returned from a call to a COM component."
该文件是应用程序目录中的 SQLite 数据库,具有自定义文件扩展名。
如何使用 GUID 标记此文件?
P.S。经过一番摸索……也许问题是我没有为自定义文件类型注册文件 属性 处理程序。还不确定该怎么做。
问题是自定义文件类型不支持存储属性。
属性存储在文件中,由 Windows 10 使用您实现的 属性 处理程序写入和读取。
下一页讨论 Windows 10 中的属性:https://msdn.microsoft.com/en-us/library/windows/desktop/bb776859(v=vs.85).aspx
关于使用 SQLite 作为文档格式,不幸的是,SQLite 文件只能在应用程序目录中访问。因此,支持文件属性的效率非常低,因为读取或写入 属性 需要将文件复制到应用程序目录并返回。