我需要为某些Word / PDF文档设置“公司”字段值。我说的是您在“文件属性”下看到的扩展文件属性(摘要/作者/标题等)。
我知道如何 获取 它们(通过使用shell32.dll类库)。我以为我也可以使用相同的类库 设置 它们,但似乎编写扩展属性要困难一些,shell32.dll并且不允许这样做。
shell32.dll
我发现了有关的内容taglib-sharp,该内容似乎可以设置扩展属性,但是我不太了解它是如何工作的。
taglib-sharp
将以下NuGet软件包添加到您的项目中:
Microsoft.WindowsAPICodePack-Shell
Microsoft.WindowsAPICodePack-Core
using Microsoft.WindowsAPICodePack.Shell; using Microsoft.WindowsAPICodePack.Shell.PropertySystem; string filePath = @"C:\temp\example.docx"; var file = ShellFile.FromFilePath(filePath); // Read and Write: string[] oldAuthors = file.Properties.System.Author.Value; string oldTitle = file.Properties.System.Title.Value; file.Properties.System.Author.Value = new string[] { "Author #1", "Author #2" }; file.Properties.System.Title.Value = "Example Title"; // Alternate way to Write: ShellPropertyWriter propertyWriter = file.Properties.GetPropertyWriter(); propertyWriter.WriteProperty(SystemProperties.System.Author, new string[] { "Author" }); propertyWriter.Close();
重要:
该文件必须是有效的,由特定的分配软件创建。每种文件类型都有特定的扩展文件属性,但并非所有文件都是可写的。
如果右键单击桌面上的文件而无法编辑属性,则也将无法在代码中对其进行编辑。
例:
Author
Title
因此,请确保使用一些 try catch
try
catch
进一步的主题: MSDN:实现属性处理程序