检索'最后保存的'文件属性

本文关键字:文件属性 最后 检索 保存 | 更新日期: 2023-09-27 18:18:13

我试图使用c#访问'Last Saved By'文件属性作为MVC web应用程序的一部分。我能够从最后修改日期获得文件上的几乎所有其他属性,到所有者,我甚至使用Shell32来获得真正模糊的属性。

但是,当我检索需要报告的每个文件的审计属性时,我找不到获得"最后保存的"属性的方法。我需要得到这些数据的文件都是Excel。

检索'最后保存的'文件属性

'Last Saved By'属性可以使用WindowsAPICodePack读取。壳牌库。此属性是特定于应用程序的,因此在某些文件中不存在(例如,它在.xls中可用,但在.csv中不可用)。'Last Saved By'文件属性被命名为'LastAuthor'。

我使用nuget来获取包,下面的代码来访问属性:

        string lastSavedBy = null;
        using (var so = ShellObject.FromParsingName(file))
        {
            var lastAuthorProperty =     so.Properties.GetProperty(SystemProperties.System.Document.LastAuthor);
            if (lastAuthorProperty != null)
            {
                var lastAuthor = lastAuthorProperty.ValueAsObject;
                if (lastAuthor != null)
                {
                    lastSavedBy = lastAuthor.ToString();
                }
            }
        }

您可以访问

中的属性
Workbook.BuiltinDocumentProperties(7)

当从c#访问时,它可能有索引6。参见MSDN文档。

快速验证:在Excel VBA编辑器(Alt+F11)的即时窗口(Ctrl+G)中可以输入
? ThisWorkbook.BuiltinDocumentProperties(7),按"Enter",显示属性。这是Excel部分。

还有如何从c#调用Excel的部分,但我不打算涵盖这一部分,你可以找到关于这个主题的数百个答案和示例。

也许更有效的方法是添加对Microsoft.Office.Tools的引用。Excel命名空间和直接工作,不需要Excel

在Visual Basic中

Dim sffile As Object = Microsoft.WindowsAPICodePack.Shell.ShellObject.FromParsingName(fileentry.FullName)
                    
Dim sf As Object = sffile.Properties.System.Document.LastAuthor.value