I'm trying to find out how to read/write to the extended file properties in C# e.g. Comment, Bit Rate, Date Accessed, Category etc that you can see in Windows explorer. Any ideas how to do this? EDIT: I'll mainly be reading/writing to video files (AVI/DIVX/...)
For those of not crazy about VB, here it is in c#:
Note, you have to add a reference to Microsoft Shell Controls and Automation from the COM tab of the References dialog.
public static void Main(string[] args) {     List<string> arrHeaders = new List<string>();      Shell32.Shell shell = new Shell32.Shell();     Shell32.Folder objFolder;      objFolder = shell.NameSpace(@"C:\temp\testprop");      for( int i = 0; i < short.MaxValue; i++ )     {         string header = objFolder.GetDetailsOf(null, i);         if (String.IsNullOrEmpty(header))             break;         arrHeaders.Add(header);     }      foreach(Shell32.FolderItem2 item in objFolder.Items())     {         for (int i = 0; i < arrHeaders.Count; i++)         {             Console.WriteLine(               $"{i}\t{arrHeaders[i]}: {objFolder.GetDetailsOf(item, i)}");         }     } } 
                        Add following NuGet packages to your project:
Microsoft.WindowsAPICodePack-Shell by MicrosoftMicrosoft.WindowsAPICodePack-Core by Microsoftusing 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();  Important:
The file must be a valid one, created by the specific assigned software. Every file type has specific extended file properties and not all of them are writable.
If you right-click a file on desktop and cannot edit a property, you wont be able to edit it in code too.
Example:
Author or Title property.So just make sure to use some try catch
Further Topic: Microsoft Docs: Implementing Property Handlers
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With