簡體   English   中英

在日期以外的C#中修改文件屬性

[英]Modify File Properties in C# Other Than Date

我正在.NET 3.5,Visual Studio 2010中工作。正在使用Outlook加載項,該加載項將一些電子郵件保存到文件夾中。 我已經使用Microsoft.Office.Interop.Outlook.MailItem.SaveAs函數來使其工作。 但是,文件屬性僅具有當前時間(通過外接程序導出文件的時間)作為其“修改日期/創建日期”等信息,而其他屬性(例如“收件人”,“發件人”,“抄送”,“密件抄送”則不存在)。

如果您在Windows資源管理器(我使用的是Windows 7)中打開文件夾,請轉到頂部顯示“名稱”,“修改日期”,“類型”等的位置,然后單擊“更多”,然后查看其他可能相關的其他列,例如“專輯藝術家”,“收件人”,“發件人”等

C#有一個非常簡單的方法來修改時間, File.SetCreationTime(filename, DateTime object); 但是,沒有.SetTo或.SetAlbumArtist或類似的東西。 我將如何修改這些屬性?

更新1:通過研究,我找到了以下鏈接: 讀/寫'擴展'文件屬性(C#) ,因此可能包含答案...但是我不知道如何。 接受的答案提到使用.dll在Shell上運行方法。 第二個答案包含C#代碼,然后一個注釋者基本上詢問了我想知道的內容(如何修改特定文件的屬性),下一個注釋者回答“您不能設置這些” ...所以我仍然在廣場1。

更新2:我還嘗試了以下操作:

foreach (Object selectedObject in explorer.Selection)
{
     Outlook.MailItem email = (selectedObject as Outlook.MailItem);
     //Modify the information about the email
     email.To = "I filled in To";
     email.SaveAs(filename, OlSaveAsType.olMSG);
}

此代碼成功獲取選定的電子郵件並將其保存在文件名下。 但是,當您打開.msg時,email.To =“我填寫到”會更改信息,但文件屬性不會更改。

這不能更改,因為它實際上不是文件系統方面的任何文件屬性(例如文件創建或修改日期時間)。

您正在談論的Windows資源管理器中的列是“虛擬的”,它們只是Windows資源管理器的功能。 它“理解”某些文件類型的內容,並且可以處理像這樣的顯示和排序列。

如果要更改“收件人”,“發件人”等,則必須更改要保存的文件的內容,即更改消息中的“收件人”或“發件人”。

為此,如果您有一個Microsoft.Office.Interop.Outlook.MailItem對象(您正在保存),則在將該對象保存到文件之前,對該對象設置所需的屬性,即:

MailItem mail = ...;
mail.To = "some new to";
mail.Subject = "new subject";
mail.SaveAs(fileToSave, OlSaveAsType.OlMSG);

我不知道它是否還會更改Outlook中存儲的電子郵件,如果更改了,請在更改屬性之前創建電子郵件的副本

MailItem copyOfMailToSave = (MailItem)mail.Copy();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM