收录日期:2018/10/22 23:13:16 时间:2016/05/20 18:27:05 标签:C#
打开资源管理器,以详细列表方式查看文件列表,有一叫做"类型"的列,这个列的内容如何得到呀?

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

这个文件类型是怎么找到的?好象FileSystemInfo里面没有,需要到注册表去找吗?
注册表又是查找哪些值呀?
在注册表里找
HKEY_CLASSES_ROOT\.cs  下


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


再找csfile项

得到
(默认) 为 C# Source file

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

当然, 要写成程序, 无非也就是访问注册表
刚写了一段测试用的, 能取扩展名对应的描述文字

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);
}
}
}
也可以用获取:

assoc .cs
肯定是注册表,同意楼上
有更简单、高效的方法:用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;

无聊问题:下辈子(如果有的话)想做什么? 怎在TREEVIEW加上背景图? 你这个斑竹是怎么当的…… 让PB只打印当前记录 这个问题怎么解决 session问题??????? 谁有股票的控件.... 我的图标是32*32的可在D6中是16*16的应如何解决..... 关于ImageObserver的问题(100分) 2000的域控制器是否可以同时做DNS服务器呢? 谁有java问答式教程的 pdf? 菜题(如何屏蔽ctrl+alt+del) 谁有射击游戏的vb原代码(有注释) 那个大学的潜入式方向研究生较好? C++的小问题 D版的WIN-XP可激活吗? CB的BUG!!!??? 小技巧! MM我又有个问题想请教各位一下! 紧急:请问高手们,如何屏蔽掉别的程序的鼠标右建功能? 字符串转化为单个数字问题 这是什么错啊 做EJB,看什么参考书比较好? 怎么修改XP的登录画面呢? 怎样在SQL查询中动态改变表 关于我们本地的聊天室的技术问题 WIN2000的小问题! 愚人的节日 关于拷贝构造函数 陈美能成为是第一个进入英国王室的华裔吗???????