Berikut adalah solusi untuk membaca - bukan menulis - properti yang diperluas berdasarkan apa yang saya temukan di halaman ini dan dengan bantuan objek shell32 .
Untuk memperjelas ini adalah retasan. Sepertinya kode ini masih akan berjalan di Windows 10 tetapi akan mengenai beberapa properti kosong. Versi Windows sebelumnya harus menggunakan:
var i = 0;
while (true)
{
...
if (String.IsNullOrEmpty(header)) break;
...
i++;
Di Windows 10 kami berasumsi bahwa ada sekitar 320 properti untuk dibaca dan cukup lewati entri kosong:
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;
}
Seperti yang disebutkan, Anda perlu merujuk pada perakitan Com Interop.Shell32.
Jika Anda mendapatkan pengecualian terkait STA, Anda akan menemukan solusinya di sini:
Pengecualian saat menggunakan Shell32 untuk mendapatkan properti file diperpanjang
Saya tidak tahu seperti apa nama properti itu pada sistem asing dan tidak dapat menemukan informasi tentang konstanta yang dapat dilokalkan yang akan digunakan untuk mengakses kamus. Saya juga menemukan bahwa tidak semua properti dari dialog Properti yang ada di kamus dikembalikan.
BTW ini sangat lambat dan - setidaknya pada Windows 10 - penguraian tanggal dalam string yang diambil akan menjadi tantangan sehingga menggunakan ini tampaknya ide yang buruk untuk memulai.
Pada Windows 10 Anda pasti harus menggunakan pustaka Windows.Storage yang berisi SystemPhotoProperties, SystemMusicProperties, dll.
Https://docs.microsoft.com/en-us/windows/uwp/files/quickstart-getting-file-properties
Dan akhirnya, saya memposting solusi yang jauh lebih baik yang menggunakan WindowsAPICodePack di sana