音楽や動画ファイルのメタデータを取得する際、 taglib などの外部ライブラリを使用しても良いのですが、使う範囲が限られているのであれば、 Windows 標準の shell32.dll を使用するのも一つの選択肢です。
ただ、これには弱点があり、 XP/Vista/7 間で微妙に互換性がないことと、特に AAC/mp4 ファイルのメタデータ取得ができたりできなかったり、という問題があります。
エクスプローラーの詳細表示と同じ情報を取得できるので、特に文字化けを気にしなくて済むというのは利点ですが、AAC 系のファイルは XP では扱いづらいこと、また未だに XP マシンが跋扈している現状、使い勝手は正直良くないですが、とりあえず載せてみます。
3OS 間で互換性がない、というのは、 Shell32.ShellClass のインスタンスを作成する際、例えば 7 で開発したものをそのまま XP に持って行くと、 InvalidCastException が発生し、インスタンスを作れない、というものです。これを回避するには、 Activator.CreateInstance メソッドを利用します。
shell32.dll は未だに COM Component ですので、参照設定から "Microsoft Shell Controls And Automation" を登録しておきます。
public void test() { Shell32.Folder folder = null; string someDirectory = @"c:\hoge\fuga"; string someFile = @"test.mp3"; try { Type wshell = Type.GetTypeFromProgID("Shell.Application"); object wshInstance = Activator.CreateInstance(wshell); folder = (Shell32.Folder)wshell.InvokeMember("NameSpace", System.Reflection.BindingFlags.InvokeMethod, null, wshInstance, new object[] { someDirectory }); } catch { } Shell32.FolderItem folderitem = folder.ParseName(someFile); // 再生時間の表示。ただし7上。XPでは 27 ではなく 21 となる。 System.Diagnostics.Debug.WriteLine(folder.GetDetailsOf(folderitem, 27)); }