使用VC,如何得到文件的类型?

calebgch 2009-03-30 04:59:19
想要得到的是文件的类型,不是简单的后缀名,因为后缀名并不准确。

比如现在有一个dll文件,叫abc.dll,被改名改成了abc.rar或者其他的后缀名,
怎么能够判断这个abc.rar文件真正的类型是什么?

网上说要比较文件头的字节,但是不太懂,谁能给解释一下?

先给50分,不够了再加。
...全文
178 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
qidongstudy 2010-12-01
  • 打赏
  • 举报
回复
如果只判断一个文件的文件类型是不是 txt 或者 doc,那应该有点容易了吧?不通过后缀名来对比,这应该怎么判断
qidongstudy 2010-12-01
  • 打赏
  • 举报
回复
也想知道这个解决方法,求高手指教。
fairchild811 2009-03-30
  • 打赏
  • 举报
回复
而且要想对每个文件都能成功,不大可能吧。不然windows估计早有这个功能了
fairchild811 2009-03-30
  • 打赏
  • 举报
回复
这个要检查一下具体的文件内容吧
calebgch 2009-03-30
  • 打赏
  • 举报
回复
明白了,多谢各位提点。

说白了要怎么判断文件类型就得去看文件具体怎么定义的,没有准确通用的方法来判断,对吧?


lijinfenghust 2009-03-30
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 calebgch 的回复:]
引用 2 楼 lijinfenghust 的回复:
基本没戏,除非你知道这个文件应该在哪几种类型里面,然后查这几种文件格式。



这么悲惨啊
是说只能针对某几种格式来进行判断,这样才有针对性;
如果仅仅从文件来判断,太复杂以至于基本就没希望判断出真正的类型?
[/Quote]

别说通用文件了(现在的操作系统大部分把外设当文件看)。就说常用文件,它不过是辅助外设里面的一块数据。
扩展名不过是存在文件夹(一中特殊的文件)的元数据的一部分。
具体什么含义 都是能打开它的程序定义的。所以对所有的操作基本不可能啊。你今天程序写好了,明天别人定义了一种新格式,你没办法了吧。

所以 你想探查一些常用的格式还有希望 比方别人吧bmp阿,mp3啊 以及视频文件 改了扩展名,你可以去网上搜参考资料,然后 看这些文件格式是怎么定义的。
然后才能解析。
  • 打赏
  • 举报
回复
解析文件头。。。。
if。。else
downmooner 2009-03-30
  • 打赏
  • 举报
回复
我记得dos有个命令是给文件后追加数据,但不影响原文件。。。。。

你可以用来给自己的文件追加特征码之类的。。即使改了名字你也可以 seekp(),然后读 然后比较。
jixingzhong 2009-03-30
  • 打赏
  • 举报
回复
通过分析文件头判定文件类型,也只能对某一些特殊的文件有效。。。。
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 calebgch 的回复:]
引用 1 楼 hairetz 的回复:
晕,这估计得先解析文件头的内容


怎么个解析法?给点资料吧。
[/Quote]

不清楚,不熟悉文件头构造就不行。你网上找下具体类型文件的的头
我以前只解析过抓包后的.cap文件头
叶落寒山 2009-03-30
  • 打赏
  • 举报
回复
exe、dll 是PE文件格式。到网上查PE格式的资料。你这种设计方式只能解析有限的文件格式。即预先在你的程序中编好解析的代码。
calebgch 2009-03-30
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 lijinfenghust 的回复:]
基本没戏,除非你知道这个文件应该在哪几种类型里面,然后查这几种文件格式。

[/Quote]

这么悲惨啊
是说只能针对某几种格式来进行判断,这样才有针对性;
如果仅仅从文件来判断,太复杂以至于基本就没希望判断出真正的类型?
downmooner 2009-03-30
  • 打赏
  • 举报
回复
如果文件是自己生成的那好办
calebgch 2009-03-30
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 hairetz 的回复:]
晕,这估计得先解析文件头的内容
[/Quote]

怎么个解析法?给点资料吧。
lijinfenghust 2009-03-30
  • 打赏
  • 举报
回复
基本没戏,除非你知道这个文件应该在哪几种类型里面,然后查这几种文件格式。
  • 打赏
  • 举报
回复
晕,这估计得先解析文件头的内容
【版权声明】
本openssl的VC软件包由王志海(DragonKing)根据openssl整理提供,Eric Young's拥有对所有源代码的最终版权,一切应用应该遵照openssl的声明。该版本为openssl-0.9.6h
欢迎联系本人或提意见:
Email:wzhah@263.net
HomePage: http://gdwzh.126.com[openssl中文专业论坛,提供大量中文资料]
【功能说明】
本软件包将每个openssl的apps程序做成一个可直接运行调试的VC Console 类型应用程序,方便研究和运用openssl的朋友,避免了openssl在windows下的编译问题,并且因为可以在VC环境下进行调试,使得对openssl的各个应用程序的流程更容易理解,这对openssl初学者尤其方便。希望大家多提意见。
使用说明】
要正确使用该工程文件,呢应该从http://gdwzh.126.com获取如下目录和文件
1.Windows平台下openssl动态库,包含两个dll文件,将他们拷贝到Windows/system32目录下;
2.Windows平台下openssl静态库,下载解压后得到一个名为lib的文件夹,包含两个lib文件
3.openssl的头文件,下载解压后得到一个名为include的录。
4.Windows平台rsa项目文件,下载解压后得到一个名为rsa的目录,里面包含了项目主文件
5.将目录lib、include、和rsa拷贝到同一个目录下;
6.完成上述步骤,就可以像普通的VC项目一样进行调试编译了,有任何问题,请到http://openssl.126.com提问。
【注意】
1.获取最新信息请到http://gdwzh.126.com的openssl专业论坛.
2.编译好的运用程序有可能需要其它的openssl文件支持,如openssl.cnf等,请参照openssl相关文档或本站信息公布。

64,439

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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