Многие из этих сведений предоставляются оболочкой, поэтому вы можете сделать это, добавив ссылку на библиотеку COM «Элементы управления и автоматизации Microsoft Shell» (Shell32), а затем с помощью метода Folder.GetDetailsOf запросить расширенные сведения. ,
Я недавно искал это и наткнулся на этот самый вопрос на общих форумах MSDN C #. Я написал это как метод расширения для FileInfo:
public static Dictionary<string, string> GetDetails(this FileInfo fi)
{
Dictionary<string, string> ret = new Dictionary<string, string>();
Shell shl = new ShellClass();
Folder folder = shl.NameSpace(fi.DirectoryName);
FolderItem item = folder.ParseName(fi.Name);
for (int i = 0; i < 150; i++)
{
string dtlDesc = folder.GetDetailsOf(null, i);
string dtlVal = folder.GetDetailsOf(item, i);
if (dtlVal == null || dtlVal == "")
continue;
ret.Add(dtlDesc, dtlVal);
}
return ret;
}
Если вы ищете конкретные записи, вы можете сделать что-то подобное, хотя будет гораздо быстрее выяснить, по какому индексу находятся эти записи (я думаю, длина - это индекс 27) и просто запросить их. Заметьте, я мало исследовал, может ли индекс измениться (я сомневаюсь в этом), поэтому я выбрал словарь.