唯汉独以强亡:文件扩展名有何作用???

来源:百度文库 编辑:偶看新闻 时间:2024/04/28 09:14:05
文件扩展名有何作用??? 2006-2-24 10:37 提问者:匿名 | 浏览次数:2025次 推荐答案 2006-2-24 10:41
对于文件来说,扩展名只是帮助识别文件性质的标志。和文件名一样,扩展名可以使用任意的名字,可以随便修改。除了早期的文件扩展名(EXE、COM、BAT、SYS )由操作系统制定和约定俗成(TXT)外,扩展名的产生大概可以分成以下几种情况:   在计算机的应用过程中,产生了许许多多不同类型的文件。对于程序员来说,如果他编写的软件需要产生一种新型格式的文件,他就可以任意定义一个扩展名给这个文件。可能这个软件非常成功,衍生出了许多相关的程序,为了兼容,这个扩展名就成了这一类型文件的专利。比如 RAR、CCD(Clone CD) 文件。 另一种情况,就是根据某种标准指定的扩展名,如:JPG,MPG。   有了扩展名,在针对某种类型的文件时,就可以指定某个文件来处理(Windows 称为关联),确实方便很多。那么扩展名是不是判断文件性质的的唯一方法呢?答案是否定的。举例来说,DAT 文件是应用及其广泛的一种扩展名,从 VCD 光盘,到很多数据文件,Cuteftp 的站点管理信息也用它来做扩展名(Site.DAT,备份 Cuteftp 的时候只保留这个文件就好了)。很明显,没有哪个软件能够将如此之多的 DAT 文件统一起来打开。   以前在 DOS 的时期,为了防止文件型病毒,有人通过修改 IO.SYS MSDOS.SYS 文件的方法,改变系统默认执行文件的扩展名。比如将 EXE 改成 1XE,COM 改成 C0M 之类。这样正常的带有 EXE 扩展名的文件无法在修改过的系统上执行,只有把扩展名改成 1XE 才行。这样一来系统内所有的执行文件必须全部改换身份,变成的满眼的 1XE、C0M 之类。出发点是当病毒在执行传染过程中由于找不到 EXE 或 COM 文件,无法完成传染,系统也就安全了。但是实际上,他的系统仍然可能被病毒感染,因为某些病毒是根据文件头标志来传染文件的。而且这种方法烦复异常,应用起来很不现实,举例来说,当某程序需要调用另外的程序时,因为扩展名已经改变,所以找不到文件,想让此程序正常工作的唯一办法是把这个程序也像 MSDOS.SYS 文件那样处理一下,把调用的文件名改掉(有点类似于现在的汉化)。如果系统中存在几十上百个这样的文件......   在上文中提到过文件头,当 MS 定义执行文件时,它允许两种类型的文件可以被系统执行,那就是 COM 和 EXE 文件。这两种文件的区别就是 COM 文件完全由编译好的代码组成,执行指令和数据混合存放在一起,通过跳转指令把它们分开(实际上可以把 COM 看成只有一个段的 EXE 文件,由于寻址的原因,每个段的大小最多 64K,所以 COM 文件绝大多数小于 64K。为什么说绝大多数呢,因为采取一些技巧可以让 COM 突破 64K 的限制,比如 Norton 的一些工具程序就是这样。至于什么技巧,不要问我,我也不知道)。而 EXE 文件由数据段和代码段组成,为了能够区分,在文件的前部由编译程序生成了一个文件头。这个文件头包含了 EXE 执行时自身所需的信息,比如代码和数据段的地址,所需最少内存等等。更主要的是在文件头里面包含了一个标志,这个标志将 EXE 和 COM 文件区分开!   当我们在命令行输入一个指令的时候,系统会首先在内部命令中查找有无符合的指令,如果没有就在当前路径和系统路径中搜索同名的 BAT COM 和 EXE 文件,找到后由 COMMAND.COM 将其装载并执行。如上文所讲,EXE 和 COM 有格式上的不同,那么把一个 EXE 文件改成 COM 扩展名或者反之,如果仍然按照原来的规则处理肯定会出错,但事实上并不会。原因在于,系统不完全根据扩展名来定义文件,当一个文件被 COMMAND.COM 装载后,它首先要寻找 EXE 文件标志,如果存在就按 EXE 规则执行,不存在就当它是 COM 文件。各位有兴趣的话可以做个实验,包括将一个文本文档改成 COM 或 EXE 的话,看看系统有什么反应(请在 DOS 下试验,尤其不能在 Win NT/2K/XP 系列的命令提示符下做,因为它是 DOS 虚拟机)。在 EXE 文件中这个标志就是文件的前两个字节,内容是 16 进制的 4D 5A,转换成 ASCII 码是 MZ。   同样现在很多类型的文件为了都有文件头,比如所有的音频,视频文件,带格式的文档文件等。应用程序在处理他们的时候也都是通过这里的标志来判断文件类型和文件本身的信息,如音频,视频文件的压缩格式,大小,索引等。下面是一些常见文件的标志,我只找了几个,更多的信息你可以自己收集,数字是十六进制,括号内是对应的 ASCII 码字符。   可执行文件 EXE: 4D 5A (MZ)     Zip 文件:50 4B (PK)     RAR 文件:52 61 72 21 (Rar!)     BMP 文件:42 4D (BM)   当遇到一个未知的文件时,或者怀疑文件的性质时,察看它的文件头绝对是个好主意。同样,把文件的扩展名修改不会改变它的本质。即使把一个 JPG 文件改成 AAA,ACDSEE 一样可以观看。所以我的结论是:扩展名是为了方便实用文件而定义的,和文件的性质无关。
赞同0| 评论