如何获取文件类型

popcorn 2003-08-11 01:03:49
打开资源管理器,以详细列表方式查看文件列表,有一叫做"类型"的列,这个列的内容如何得到呀?

比如.cs文件的文件类型就显示:C# Source file
.exe文件的文件类型就显示:应用程序
文件夹就直接显示为文件夹

这个文件类型是怎么找到的?好象FileSystemInfo里面没有,需要到注册表去找吗?
注册表又是查找哪些值呀?
...全文
304 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Triumph 2003-09-06
  • 打赏
  • 举报
回复
有更简单、高效的方法:用API函数 SHGetFileInfo

DWORD_PTR SHGetFileInfo( LPCTSTR pszPath,
DWORD dwFileAttributes,
SHFILEINFO *psfi, //此类型定义在下面
UINT cbFileInfo,
UINT uFlags
);


typedef struct _SHFILEINFO {
HICON hIcon;
int iIcon;
DWORD dwAttributes;
TCHAR szDisplayName[MAX_PATH];
TCHAR szTypeName[80]; //注意这一个
} SHFILEINFO;
ddy2000 2003-08-11
  • 打赏
  • 举报
回复
肯定是注册表,同意楼上
ArLi2003 2003-08-11
  • 打赏
  • 举报
回复
也可以用获取:

assoc .cs
panyee 2003-08-11
  • 打赏
  • 举报
回复
刚写了一段测试用的, 能取扩展名对应的描述文字

string strExt = ".cs";
string strDefault = "";
RegistryKey regRead;
regRead = Registry.ClassesRoot.OpenSubKey(strExt, true);
if(regRead != null)
{
strDefault = regRead.GetValue("").ToString();
if(strDefault != null)
{
regRead = Registry.ClassesRoot.OpenSubKey(strDefault, true);
if(regRead != null)
{
strDefault = regRead.GetValue("").ToString();
MessageBox.Show(strDefault);
}
}
}
panyee 2003-08-11
  • 打赏
  • 举报
回复
当然, 要写成程序, 无非也就是访问注册表
panyee 2003-08-11
  • 打赏
  • 举报
回复
在注册表里找
HKEY_CLASSES_ROOT\.cs 下


键值Content Type 为 text/plain
(默认) 为 csfile


再找csfile项

得到
(默认) 为 C# Source file

还可以得到默认Open的程序, 等...

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧