在所有类型的文件上写入文件扩展属性“修订号”

时间:2011-12-05 11:13:06

标签: c# windows

我想使用c#

读/写窗口信息文件(扩展文件属性)

通过执行以下操作找到的:在窗口浏览器中右键单击=> properties =>摘要标签。我想要主要访问属性:

  • 标题
  • 分类
  • 修订号

对于office文档,我可以使用以下(使用Office.Interop)或使用DSOFile

    private static string GetExcelWorkbookPropertyValue(_Workbook workbook, string propertyName)
    {
        DocumentProperties builtInProperties = (DocumentProperties)workbook.BuiltinDocumentProperties;
        string value = builtInProperties.Cast<DocumentProperty>().First(x => x.Name.Equals(propertyName, StringComparison.InvariantCultureIgnoreCase)).Value;
        return value ?? "";
    }

但我想要的是一个更通用的解决方案,适用于所有文件。

有人可以帮忙吗?

提问附加信息您还可以使用Shell32读取属性标题和类别

        Shell32.Shell shell = new Shell32.Shell();
        //set the namespace to file path
        Shell32.Folder folder = shell.NameSpace(Path.GetDirectoryName(file));
        //get ahandle to the file
        Shell32.FolderItem folderItem = folder.ParseName(Path.GetFileName(file));
        //did we get a handle ?
        if (folderItem != null)
        {
            for (int i = 0; i < 100; i++)
            {
                string s = folder.GetDetailsOf(folderItem, i);
                System.Diagnostics.Debug.WriteLine(s);
            }
        }

但是我仍然写了正确的版本号,但它看起来像版本号是一个办公文档属性,无法写入(我想它会破坏办公室的跟踪过程)。

没有意义的是我可以使用窗口浏览器对其进行修改,并且该属性对于非办公文档也是可见的......我很难理解这一点。

1 个答案:

答案 0 :(得分:1)

此信息存储在properties中。以下是一些standard properties。不过,我不确定.NET Framework是否提供了这些接口的包装器。