Hier ist eine Lösung zum Lesen und nicht zum Schreiben der erweiterten Eigenschaften, basierend auf dem, was ich auf dieser Seite gefunden habe, und Hilfe bei Shell32-Objekten .
Um klar zu sein, ist dies ein Hack. Es sieht so aus, als würde dieser Code unter Windows 10 weiterhin ausgeführt, trifft jedoch auf einige leere Eigenschaften. In früheren Windows-Versionen sollte Folgendes verwendet werden:
var i = 0;
while (true)
{
...
if (String.IsNullOrEmpty(header)) break;
...
i++;
Unter Windows 10 gehen wir davon aus, dass etwa 320 Eigenschaften gelesen werden müssen, und überspringen einfach die leeren Einträge:
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;
}
Wie bereits erwähnt, müssen Sie auf die Com-Assembly Interop.Shell32 verweisen.
Wenn Sie eine STA-bezogene Ausnahme erhalten, finden Sie die Lösung hier:
Ausnahme bei Verwendung von Shell32 zum Abrufen der erweiterten Dateieigenschaften
Ich habe keine Ahnung, wie diese Eigenschaftsnamen auf einem fremden System aussehen würden, und konnte keine Informationen darüber finden, welche lokalisierbaren Konstanten für den Zugriff auf das Wörterbuch verwendet werden sollen. Ich habe auch festgestellt, dass nicht alle Eigenschaften aus dem Dialogfeld "Eigenschaften" im zurückgegebenen Wörterbuch vorhanden waren.
Übrigens ist dies furchtbar langsam und - zumindest unter Windows 10 - das Parsen von Daten in der abgerufenen Zeichenfolge wäre eine Herausforderung. Daher scheint es zunächst eine schlechte Idee zu sein, dies zu verwenden.
Unter Windows 10 sollten Sie auf jeden Fall die Windows.Storage-Bibliothek verwenden, die die SystemPhotoProperties, SystemMusicProperties usw. enthält.
Https://docs.microsoft.com/en-us/windows/uwp/files/quickstart-getting-file-properties
Und schließlich gab ich eine viel bessere Lösung , dass Verwendungen WindowsAPICodePack dort