检索'最后保存的'文件属性
本文关键字:文件属性 最后 检索 保存 | 更新日期: 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