プロパティの取得

[STAThread]
static void Main()
{
    string folderPath = @"C:\sample";

    Shell32.Shell shell = new Shell32.Shell();
    Shell32.Folder folder = shell.NameSpace(folderPath);

    List<string> headers = new List<string>();
    for (int i = 0; ; i++)
    {
        string header = folder.GetDetailsOf(null, i);
        if (String.IsNullOrEmpty(header)) break;

        headers.Add(header);
    }

    foreach (Shell32.FolderItem item in folder.Items())
    {
        for (int i = 0; i < headers.Count; i++)
        {
            Console.Write("{0}:{1}\t{2}",
                i, headers[i], folder.GetDetailsOf(item, i));
        }
    }
}

Shell32を利用するには、参照にCOMの[Microsoft Shell Controls And Automation]を追加します。

メソッドにSTAThread属性を指定しないと、「型 'System.__ComObject' の COM オブジェクトをインターフェイス型 'Shell32.Shell' にキャストできません。IID '{286E6F1B-7113-4355-9562-96B7E9D64C54}' が指定されたインターフェイスの COM コンポーネント上での QueryInterface 呼び出しのときに次のエラーが発生したため、この操作に失敗しました: インターフェイスがサポートされていません (HRESULT からの例外:0x80004002 (E_NOINTERFACE))。」として例外が発生します。

string GetDetailsOf(
    object vItem, // 取得対象のShell32.FolderItem
    int iColumn   // 取得対象のインデックス
    )
Folder.GetDetailsOf method (Windows) | MSDN