none
如何通过c#代码来修改文件或文件夹的备注属性? RRS feed

  • 问题

  • 如题所示,自己手动修改文件备注属性有点麻烦,能否通过代码进行更改。我想制作批量更改的小窗体程序,因此需要这个,相关资料没有找到


    • 已编辑 Trian555 2018年11月1日 4:37
    2018年11月1日 4:32

答案

  • 请参考一下解决方案:

    1. 下载Microsoft Developer Support OLE File Property Reader 2.1 Sample (KB 224351)

    2. 添加引用C:\DsoFile\dsofile.dll

    3. 使用以下代码修改文件的属性:

     private void btnEdit_Click(object sender, EventArgs e)
            {
                string filename = @"d:\Docker从入门到实践.pdf";
                DSOFile.OleDocumentProperties dso = new DSOFile.OleDocumentProperties();
                dso.Open(filename, false, DSOFile.dsoFileOpenOptions.dsoOptionOpenReadOnlyIfNoWriteAccess);
                dso.SummaryProperties.Title = "Titlee";
                dso.SummaryProperties.Subject = "Subject";
                dso.SummaryProperties.Company = "MS";
                dso.SummaryProperties.Author = "Test";
    
                dso.Save();
    
                dso.Close(false);
            }

    希望可以帮到你。


    ericzhou

    • 已标记为答案 Trian555 2018年11月2日 1:50
    2018年11月1日 5:58
  • 你好,

    使用Nuget 添加下面的2个包

    • Microsoft.WindowsAPICodePack-Shell by Microsoft
    • Microsoft.WindowsAPICodePack-Core by Microsoft

    然后通过下面的代码可以添加备注:

    注意:不是所有的文件类型都可以加备注,有些文件类型是不可写的,我建议在循环中使用Try catch 语句来过滤掉不可写的。

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using Microsoft.WindowsAPICodePack.Shell;
    using Microsoft.WindowsAPICodePack.Shell.PropertySystem;
    
    namespace App1
    {
        class Program
        {
            static void Main(string[] args)
            {
                string filePath = @"D:\Tools\steps.docx";
                var file = ShellFile.FromFilePath(filePath);
                file.Properties.System.Comment.Value = "Test Comments";       
            }
        }
    }

    Best regards,

    Zhanglong


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    • 已标记为答案 Trian555 2018年11月2日 1:50
    2018年11月1日 6:34
    版主

全部回复

  • 请参考一下解决方案:

    1. 下载Microsoft Developer Support OLE File Property Reader 2.1 Sample (KB 224351)

    2. 添加引用C:\DsoFile\dsofile.dll

    3. 使用以下代码修改文件的属性:

     private void btnEdit_Click(object sender, EventArgs e)
            {
                string filename = @"d:\Docker从入门到实践.pdf";
                DSOFile.OleDocumentProperties dso = new DSOFile.OleDocumentProperties();
                dso.Open(filename, false, DSOFile.dsoFileOpenOptions.dsoOptionOpenReadOnlyIfNoWriteAccess);
                dso.SummaryProperties.Title = "Titlee";
                dso.SummaryProperties.Subject = "Subject";
                dso.SummaryProperties.Company = "MS";
                dso.SummaryProperties.Author = "Test";
    
                dso.Save();
    
                dso.Close(false);
            }

    希望可以帮到你。


    ericzhou

    • 已标记为答案 Trian555 2018年11月2日 1:50
    2018年11月1日 5:58
  • 你好,

    使用Nuget 添加下面的2个包

    • Microsoft.WindowsAPICodePack-Shell by Microsoft
    • Microsoft.WindowsAPICodePack-Core by Microsoft

    然后通过下面的代码可以添加备注:

    注意:不是所有的文件类型都可以加备注,有些文件类型是不可写的,我建议在循环中使用Try catch 语句来过滤掉不可写的。

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using Microsoft.WindowsAPICodePack.Shell;
    using Microsoft.WindowsAPICodePack.Shell.PropertySystem;
    
    namespace App1
    {
        class Program
        {
            static void Main(string[] args)
            {
                string filePath = @"D:\Tools\steps.docx";
                var file = ShellFile.FromFilePath(filePath);
                file.Properties.System.Comment.Value = "Test Comments";       
            }
        }
    }

    Best regards,

    Zhanglong


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    • 已标记为答案 Trian555 2018年11月2日 1:50
    2018年11月1日 6:34
    版主