C#:如何检索文件夹的描述?

时间:2015-04-29 08:07:09

标签: c#

所有文件夹都有一个类型:它们中的大多数都被命名为“文件夹”,但有些被称为“Mediaserver”或“本地硬盘”(翻译)。如何使用C#检索这些文件夹类型? 我在文件中找到了这个:How can I get the description of a file extension in .NET

2 个答案:

答案 0 :(得分:14)

SHGetFileInfo是您需要的功能。您需要将标记FILE_ATTRIBUTE_DIRECTORY作为参数传递给dwFileAttributes参数。

基于same answer you linked我修改了代码以使其适用于目录。

public static string GetFileFolderTypeDescription(string fileNameOrExtension)
{
    SHFILEINFO shfi;
    if (IntPtr.Zero != SHGetFileInfo(
                        fileNameOrExtension,
                        FILE_ATTRIBUTE_NORMAL | FILE_ATTRIBUTE_DIRECTORY,
                        out shfi,
                        (uint)Marshal.SizeOf(typeof(SHFILEINFO)),
                        SHGFI_USEFILEATTRIBUTES | SHGFI_TYPENAME))
    {
        return shfi.szTypeName;
    }
    return null;
}

答案 1 :(得分:5)

每个文件夹中都有一个名为desktop.ini的文件,其中包含INI文件格式的文件夹的翻译文件夹描述和图标。也许你需要阅读它。

我发现对于系统文件夹,这会引用系统DLL中的资源,所以它可能不像看起来那么简单。

话虽如此,您也可以尝试使用SHGetFileInfo函数来获取该信息。

刚才看到Sriram Sakthivel使用SHGetFileInfo给出了一个非常好的答案,所以请继续。