Burada, bu sayfada ve shell32 nesneleriyle ilgili yardımda bulduğuma dayalı olarak genişletilmiş özellikleri okumak - yazmak için bir çözüm var .
Açık olmak gerekirse bu bir hack. Görünüşe göre bu kod hala Windows 10'da çalışacak, ancak bazı boş özelliklere isabet edecek. Windows'un önceki sürümü şunları kullanmalıdır:
var i = 0;
while (true)
{
...
if (String.IsNullOrEmpty(header)) break;
...
i++;
Windows 10'da, boş girişleri okumak ve atlamak için yaklaşık 320 özellik olduğunu varsayıyoruz:
private Dictionary<string, string> GetExtendedProperties(string filePath)
{
var directory = Path.GetDirectoryName(filePath);
var shell = new Shell32.Shell();
var shellFolder = shell.NameSpace(directory);
var fileName = Path.GetFileName(filePath);
var folderitem = shellFolder.ParseName(fileName);
var dictionary = new Dictionary<string, string>();
var i = -1;
while (++i < 320)
{
var header = shellFolder.GetDetailsOf(null, i);
if (String.IsNullOrEmpty(header)) continue;
var value = shellFolder.GetDetailsOf(folderitem, i);
if (!dictionary.ContainsKey(header)) dictionary.Add(header, value);
Console.WriteLine(header +": " + value);
}
Marshal.ReleaseComObject(shell);
Marshal.ReleaseComObject(shellFolder);
return dictionary;
}
Belirtildiği gibi, Interop.Shell32 Com derlemesine başvurmanız gerekir.
STA ile ilgili bir istisna alırsanız, çözümü burada bulacaksınız:
Dosya genişletilmiş özelliklerini almak için Shell32 kullanıldığında istisna
Yabancı bir sistemde bu özellik adlarının nasıl olacağı hakkında hiçbir fikrim yok ve sözlüğe erişmek için hangi yerelleştirilebilir sabitlerin kullanılacağı hakkında bilgi bulamadım. Ayrıca, Özellikler iletişim kutusundaki tüm özelliklerin döndürülen sözlükte bulunmadığını da buldum.
BTW bu son derece yavaştır ve - en azından Windows 10'da - alınan dizedeki tarihleri ayrıştırmak zor olabilir, bu yüzden bunu kullanmak kötü bir fikir gibi görünüyor.
Windows 10'da SystemPhotoProperties, SystemMusicProperties vb. İçeren Windows.Storage kitaplığını kesinlikle kullanmalısınız.
Https://docs.microsoft.com/en-us/windows/uwp/files/quickstart-getting-file-properties
Ve son olarak, orada WindowsAPICodePack kullanan çok daha iyi bir çözüm yayınladım