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

Posted

技术标签:

【中文标题】在所有类型的文件上写入文件扩展属性“修订号”【英文标题】:Write file extended property "Revision Number" on all type of files 【发布时间】:2011-12-05 11:13:06 【问题描述】:

我想用c#读/写窗口信息文件(扩展文件属性)

通过执行以下操作找到的:在窗口资源管理器中右键单击 => 属性 => 摘要选项卡。我主要想访问这些属性:

标题 类别 修订号

对于办公文档,我可以使用以下(使用 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 读取属性 Title 和 Category

        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);
            
        

但是我还是写了属性Revision Number,但是看起来Revision number是office文档的属性,不能写(估计会破坏office的跟踪过程)。

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

【问题讨论】:

Read/Write 'Extended' file properties (C#) 的可能重复项 @Alex K:有了你的参考,我可以阅读属性 Title 和 Category 但仍然可以阅读 Revision Number 也不能写出所有这些 完全重复:***.com/questions/220097/…,***.com/questions/5337683/… @Dementic 这些帖子允许我阅读属性,确实我的问题反映了这些帖子中写的内容,但我的最终目标是在文档上写下修订号,看起来像他们不提供答案。我将文本更改为写入文件扩展属性。如果您有更好的措辞,请随意填写以更改/提交。 @Dementic:我阅读了这两篇文章,并尝试了各种方法,但无济于事。 dsofile 允许您编写一堆属性(例如标题、命令...),但不能编写 revisioNumber。此外,dsofile 是面向 OLE 文档属性的,我想要一个更通用的解决方案,shell32 提供给我,但我只能找到一种读取属性的方法)。我已经找到了一种解决方法,我很乐意接受它,我只是想知道是否可以在所有类型的文件上编写修订号。如果你认为这个问题很愚蠢或者认为有人已经回答了这个问题,我会删除它。 【参考方案1】:

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

【讨论】:

谢谢,这是正确的方向,但是在各种网站上进行了大量阅读之后,我认为这不是一个明智的决定。就我而言,我想使用这些属性来标记一些文件信息(ntfs依赖...),有关更多信息,您还可以阅读users.telenet.be/ws36637/properties.html,forensicfocus.com/dissecting-ntfs-hidden-streams ...

以上是关于在所有类型的文件上写入文件扩展属性“修订号”的主要内容,如果未能解决你的问题,请参考以下文章

在 OS X 上将扩展属性写入文件

如何在 SVN 中查找文件被删除/移动的所有提交(修订号)

08-Linux基础入门-文件和目录的属性及权限之文件类型文件扩展名及文件权限基础

08-Linux基础入门-文件和目录的属性及权限之文件类型文件扩展名及文件权限基础

原型和原型链

C#属性和字段