在C#中,有没有一种简单的方法通过文件扩展名确定文件类型?

3

在C#中,有没有一种简单的方法通过文件扩展名确定它的类型?例如,如果我传递一个“.txt”文件扩展名,它将返回“文本文件”,或者如果我传递“.pdf”它将返回“Adobe Acrobat Reader”。我看到Windows资源管理器内置了这种行为,在“类型”列下。是否有一种方法在C#中模仿这个功能呢?

4个回答

4

如果您想获取资源管理器中显示的内容并且愿意使用COM互操作,您可以使用Shell.Application类以最少的代码量来获取它。如果您要添加引用,请浏览到X:\ windows \ system32 \ shell32.dll,这将导入shell32的类型库。然后只需使用以下代码:

string GetFileType(string path)
{
   Shell32.ShellClass shell = new Shell32.ShellClass();
   Shell32.Folder folder = shell.NameSpace(Path.GetDirectoryName(path));
Shell32.FolderItem item = folder.ParseName(Path.GetFileName(path)); return folder.GetDetailsOf(item, 2); }

这似乎完美运行。这在所有版本的Windows上都能工作吗?XP,Vista和Windows 7? - Icemanind
它应该可以做到,COM对象已经存在很长时间了。但我个人只在7上尝试过那段代码。 - tyranid

1

1

-3

检查注册表;你可以从那里获取数据


这有点宽泛。能给一些链接吗? - Adriaan Stander
我发现谷歌搜索c# "注册表文件类型"并不是脑外科手术。 - Pierreten
9
同样适用于火箭哈哈,抱歉我不得不这么说。 - user

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接