一 : bmp文件格式详解
BMP文件格式,又称为Bitmap(位图)或是DIB(Device-Independent Device,设备无关位图),是Windows系统中广泛使用的图像文件格式。(www.61k.com)由于它可以不作任何变换地保存图像像素域的数据,因此成为我们取得RAW数据的重要来源。Windows的图形用户界面(graphical user interfaces)也在它的内建图像子系统GDI中对BMP格式提供了支持。
下面以Notepad++为分析工具,结合Windows的位图数据结构对BMP文件格式进行一个深度的剖析。
BMP文件的数据按照从文件头开始的先后顺序分为四个部分:
? bmp文件头(bmp file header):提供文件的格式、大小等信息
? 位图信息头(bitmap information):提供图像数据的尺寸、位平面
数、压缩方式、颜色索引等信息
? 调色板(color palette):可选,如使用索引来表示图像,调色板就
是索引与其对应的颜色的映射表
? 位图数据(bitmap data):就是图像数据啦^_^
下面结合Windows结构体的定义,通过一个表来分析这四个部分。
我们一般见到的图像以24位图像为主,即R、G、B三种颜色各用8
个bit来表示,这样的图像我们称为真彩色,这种情况下是不需要调色板的,也就是所位图信息头后面紧跟的就是位图数据了。因此,我们常
bmp格式 bmp文件格式详解
常见到有这样一种说法:位图文件从文件头开始偏移54个字节就是位图数据了,这其实说的是24或32位图的情况。(www.61k.com]这也就解释了我们按照这种程序写出来的程序为什么对某些位图文件没用了。
下面针对一幅特定的图像进行分析,来看看在位图文件中这四个数据段的排布以及组成。
我们使用的图像显示如下:
这是一幅16位的位图文件,因此它是含有调色板的。
在拉出图像数据进行分析之前,我们首先进行几个约定:
1. 在BMP文件中,如果一个数据需要用几个字节来表示的话,那么该数据的存放字节顺序为“低地址村存放低位数据,高地址存放高位数据”。如数据0x1756在内存中的存储顺序为:
bmp格式 bmp文件格式详解
这种存储方式称为小端方式(little endian) , 与之相反的是大端方式(big endian)。(www.61k.com)对两者的使用情况有兴趣的可以深究一下,其中还是有学问的。
2. 以下所有分析均以字节为序号单位进行。
下面我们对从文件中拉出来的数据进行剖析:
一、bmp文件头
Windows为bmp文件头定义了如下结构体:
typedef struct tagBITMAPFILEHEADER
{
UINT16 bfType;
DWORD bfSize;
UINT16 bfReserved1;
UINT16 bfReserved2;
DWORD bfOffBits;
} BITMAPFILEHEADER;
其中:
bmp格式 bmp文件格式详解
对照文件数据我们看到:
1-2 :424dh = 'BM',表示这是Windows支持的位图格式。(www.61k.com]有很多声称开头两
个字节必须为'BM'才是位图文件,从上表来看应为开头两个字节必须为'BM'才是Windows位图文件。
3-5 :00010436h = 66614 B = 65.05 kB,通过查询文件属性发现一致。 6-9 :这是两个保留段,为0。
A-D:00000436h = 1078。即从文件头到位图数据需偏移1078字节。我们稍后
将验证这个数据。
共有14个字节。
二、位图信息头
同样地,Windows为位图信息头定义了如下结构体:
bmp格式 bmp文件格式详解
代码
typedef struct tagBITMAPINFOHEADER {
DWORD biSize;
LONG biWidth;
LONG biHeight;
WORD biPlanes;
WORD biBitCount;
DWORD biCompression;
DWORD biSizeImage;
LONG biXPelsPerMeter;
LONG biYPelsPerMeter;
DWORD biClrUsed;
DWORD biClrImportant;
} BITMAPINFOHEADER;
bmp格式 bmp文件格式详解
对照数据文件:
0E-11:00000028h = 40,这就是说我这个位图信息头的大小为40个字节。(www.61k.com]前面我
们已经说过位图信息头一般有40个字节,既然是这样,为什么这里还要给一个字段来说明呢?这里涉及到一些历史,其实位图信息头原本有很多大小的版本的。我们看一下下表:
bmp格式 bmp文件格式详解
出于兼容性的考虑,大多数应用使用了旧版的位图信息头来保存文件。(www.61k.com]而
OS/2 已经过时了,因此现在最常用的格式就仅有V3 header了。因此,我们在前面说位图信息头的大小为40字节。
12-15:00000100h = 256,图像宽为255像素,与文件属性一致。
16-19:00000100h = 256,图像高为255像素,与文件属性一致。这是一个正
数,说明图像数据是从图像左下角到右上角排列的。
1A-1B:0001h, 该值总为1。
1C-1D:0008h = 8, 表示每个像素占8个比特,即该图像共有256种颜色。 1E-21:00000000h,BI_RGB, 说明本图像不压缩。
22-25:00000000h,图像的大小,因为使用BI_RGB,所以设置为0。 26-29:00000000h,水平分辨率,缺省。
2A-2D:00000000h,垂直分辨率,缺省。
2E-31:00000100h = 256,说明本位图实际使用的颜色索引数为256,与1C-ID
得到的结论一致。
32-35:00000100h = 256,说明本位图重要的颜色索引数为256,与前面得到的
结论一致。
bmp格式 bmp文件格式详解
三、调色板
下面的数据就是调色板了。[www.61k.com]前面也已经提过,调色板其实是一张映射表,标识颜色索引号与其代表的颜色的对应关系。它在文件中的布局就像一个二维数组palette[N][4],其中N表示总的颜色索引数,每行的四个元素分别表示该索引对应的B、G、R和Alpha的值,每个分量占一个字节。如不设透明通道时,Alpha为0。因为前面知道,本图有256个颜色索引,因此N = 256。索引号就是所在行的行号,对应的颜色就是所在行的四个元素。这里截取一些数据来说明:
索引:(蓝,绿,红,Alpha)
0号:(fe,fa,fd,00)
1号:(fd,f3,fc,00)
2号:(f4,f3,fc,00)
3号:(fc,f2,f4,00)
4号:(f6,f2,f2,00)
5号:(fb,
f9,f6,00) 等等。
bmp格式 bmp文件格式详解
一共有256种颜色,每个颜色占用4个字节,就是一共1024个字节,再加上前面的文件信息头和位图信息头的54个字节加起来一共是1078个字节。(www.61k.com]也就是说在位图数据出现之前一共有1078个字节,与我们在文件信息头得到的信息:文件头到文图数据区的偏移为1078个字节一致!
四、位图数据
下面就是位图数据了,每个像素占一个字节,取得这个字节后,以该字节为索引查询相应的颜色,并显示到相应的显示设备上就可以了。
注意:由于位图信息头中的图像高度是正数,所以位图数据在文件中的排列顺序是从左下角到右上角,以行为主序排列的。
也即我们见到的第一个像素60是图像最左下角的数据,第二个人像素60为图像最后一行第二列的数据,?一直到最后一行的最后一列数据,后面紧接的是倒数第二行的第一列的数据,依此类推。
如果图像是24位或是32位数据的位图的话,位图数据区就不是索引而是实际的像素值了。下面说明一下,此时位图数据区的每个像素的RGB颜色阵列排布: 24位RGB按照BGR的顺序来存储每个像素的各颜色通道的值,一个像素的所有颜色分量值都存完后才存下一个下一个像素,不进行交织存储。
32位数据按照BGRA的顺序存储,其余与24位位图的方式一样。
bmp格式 bmp文件格式详解
像素的排布规则与前述一致。[www.61k.com)
对齐规则
讲完了像素的排列规则以及各像素的颜色分量的排列规则,最后我们谈谈数据的对齐规则。我们知道Windows默认的扫描的最小单位是4字节,如果数据对齐满足这个值的话对于数据的获取速度等都是有很大的增益的。因此,BMP图像顺应了这个要求,要求每行的数据的长度必须是4的倍数,如果不够需要进行比特填充(以0填充),这样可以达到按行的快速存取。这时,位图数据区的大小就未必是 图片宽×每像素字节数×图片高 能表示的了,因为每行可能还需要进行比特填充。
填充后的每行的字节数为:
五、拾遗
至此,我们通过分析一个具体的位图文件例子详细地剖析了位图文件的组成。需要注意的是:我们讲的主要是PC机上的位图文件的构成,对于嵌入式平台,可
bmp格式 bmp文件格式详解
能在调色板数据段与PC机的不同。[www.61k.com]如在嵌入式平台上常见的16位r5g6b5位图实际上采用的掩模的方式而不是索引的方式来表示图像。此时,在调色板数据段共有四个部分,每个部分为四个字节,实际表示的是彩色版规范。即: 第一个部分是红色分量的掩模
第二个部分是绿色分量的掩模
第三个部分是蓝色分量的掩模
第四个部分是Alpha分量的掩模(缺省为0)
典型的调色板规范在文件中的顺序为为:
00F8 0000 E007 0000 1F00 0000 0000 0000
其中
00F8 0000为FB00h=1111100000000000(二进制),是蓝红分量的掩码。
E007 0000为 07E0h=0000011111100000(二进制),是绿色分量的掩码。 1F00 0000为001Fh=0000000000011111(二进制),是蓝色分量的掩码。 0000 0000设置为0。
将掩码跟像素值进行“与”运算再进行移位操作就可以得到各色分量值。看看掩码,就可以明白事实上在每个像素值的两个字节16位中,按从高到低取5、6、5位分别就是r、g、b分量值。取出分量值后把r、g、b值分别乘以8、4、8就可以补齐每个分量为一个字节,再把这三个字节按BGR组合,放入存储器,就可以转换为24位标准BMP格式了。
这样我们假设在位图数据区有一个像素的数据在文件中表示为02 F1。这个数据实际上应为F102:
r = (F102 AND F800) >> 8 = F0h = 240
bmp格式 bmp文件格式详解
g= (F102 AND 07E0)>> 3 = 20h = 32 b=(F102 AND 001F) << 3 = 10h =16 至此我们就可以显示了。(www.61k.com](本文结束
二 : BMP文件格式详解(BMP file format)
BMP文件格式,又称为Bitmap(位图)或是DIB(Device-Independent Device,设备无关位图),是Windows系统中广泛使用的图像文件格式。由于它可以不作任何变换地保存图像像素域的数据,因此成为我们取得RAW数据的重要来源。Windows的图形用户界面(graphical user interfaces)也在它的内建图像子系统GDI中对BMP格式提供了支持。
下面以Notepad++为分析工具,结合Windows的位图数据结构对BMP文件格式进行一个深度的剖析。
BMP文件的数据按照从文件头开始的先后顺序分为四个部分:
Øbmp文件头(bmp file header):[www.61k.com)提供文件的格式、大小等信息
Ø位图信息头(bitmap information):提供图像数据的尺寸、位平面数、压缩方式、颜色索引等信息
Ø调色板(color palette):可选,如使用索引来表示图像,调色板就是索引与其对应的颜色的映射表
Ø位图数据(bitmap data):就是图像数据啦^_^
下面结合Windows结构体的定义,通过一个表来分析这四个部分。
我们一般见到的图像以24位图像为主,即R、G、B三种颜色各用8个bit来表示,这样的图像我们称为真彩色,这种情况下是不需要调色板的,也就是所位图信息头后面紧跟的就是位图数据了。因此,我们常常见到有这样一种说法:位图文件从文件头开始偏移54个字节就是位图数据了,这其实说的是24或32位图的情况。这也就解释了我们按照这种程序写出来的程序为什么对某些位图文件没用了。
下面针对一幅特定的图像进行分析,来看看在位图文件中这四个数据段的排布以及组成。
我们使用的图像显示如下:
这是一幅16位的位图文件,因此它是含有调色板的。
在拉出图像数据进行分析之前,我们首先进行几个约定:
1.在BMP文件中,如果一个数据需要用几个字节来表示的话,那么该数据的存放字节顺序为“低地址村存放低位数据,高地址存放高位数据”。如数据0x1756在内存中的存储顺序为:
这种存储方式称为小端方式(little endian) ,与之相反的是大端方式(big endian)。对两者的使用情况有兴趣的可以深究一下,其中还是有学问的。
2.以下所有分析均以字节为序号单位进行。
下面我们对从文件中拉出来的数据进行剖析:
一、bmp文件头
Windows为bmp文件头定义了如下结构体:
typedef struct tagBITMAPFILEHEADER
{
UINT16 bfType;
DWORD bfSize;
UINT16 bfReserved1;
UINT16 bfReserved2;
DWORD bfOffBits;
} BITMAPFILEHEADER;
其中:
对照文件数据我们看到:
1-2:424dh = 'BM',表示这是Windows支持的位图格式。有很多声称开头两个字节必须为'BM'才是位图文件,从上表来看应为开头两个字节必须为'BM'才是Windows位图文件。
3-5:00010436h = 66614 B = 65.05 kB,通过查询文件属性发现一致。
6-9:这是两个保留段,为0。
A-D:00000436h = 1078。即从文件头到位图数据需偏移1078字节。我们稍后将验证这个数据。
共有14个字节。
二、位图信息头
同样地,Windows为位图信息头定义了如下结构体:
代码
对照数据文件:
0E-11:00000028h = 40,这就是说我这个位图信息头的大小为40个字节。前面我们已经说过位图信息头一般有40个字节,既然是这样,为什么这里还要给一个字段来说明呢?这里涉及到一些历史,其实位图信息头原本有很多大小的版本的。我们看一下下表:
出于兼容性的考虑,大多数应用使用了旧版的位图信息头来保存文件。而OS/2已经过时了,因此现在最常用的格式就仅有V3 header了。因此,我们在前面说位图信息头的大小为40字节。
12-15:00000100h = 256,图像宽为255像素,与文件属性一致。
16-19:00000100h = 256,图像高为255像素,与文件属性一致。这是一个正数,说明图像数据是从图像左下角到右上角排列的。
1A-1B:0001h,该值总为1。
1C-1D:0008h = 8,表示每个像素占8个比特,即该图像共有256种颜色。
1E-21:00000000h,BI_RGB,说明本图像不压缩。
22-25:00000000h,图像的大小,因为使用BI_RGB,所以设置为0。
26-29:00000000h,水平分辨率,缺省。
2A-2D:00000000h,垂直分辨率,缺省。
扩展:fileinputformat详解 / bmp格式详解 / bmp文件格式详解
2E-31:00000100h = 256,说明本位图实际使用的颜色索引数为256,与1C-ID得到的结论一致。
32-35:00000100h = 256,说明本位图重要的颜色索引数为256,与前面得到的结论一致。
三、调色板
下面的数据就是调色板了。前面也已经提过,调色板其实是一张映射表,标识颜色索引号与其代表的颜色的对应关系。它在文件中的布局就像一个二维数组palette[N][4],其中N表示总的颜色索引数,每行的四个元素分别表示该索引对应的B、G、R和Alpha的值,每个分量占一个字节。如不设透明通道时,Alpha为0。因为前面知道,本图有256个颜色索引,因此N = 256。索引号就是所在行的行号,对应的颜色就是所在行的四个元素。这里截取一些数据来说明:
索引:(蓝,绿,红,Alpha)
0号:(fe,fa,fd,00)
1号:(fd,f3,fc,00)
2号:(f4,f3,fc,00)
3号:(fc,f2,f4,00)
4号:(f6,f2,f2,00)
5号:(fb,f9,f6,00)等等。
一共有256种颜色,每个颜色占用4个字节,就是一共1024个字节,再加上前面的文件信息头和位图信息头的54个字节加起来一共是1078个字节。也就是说在位图数据出现之前一共有1078个字节,与我们在文件信息头得到的信息:文件头到文图数据区的偏移为1078个字节一致!
四、位图数据
下面就是位图数据了,每个像素占一个字节,取得这个字节后,以该字节为索引查询相应的颜色,并显示到相应的显示设备上就可以了。
注意:由于位图信息头中的图像高度是正数,所以位图数据在文件中的排列顺序是从左下角到右上角,以行为主序排列的。
也即我们见到的第一个像素60是图像最左下角的数据,第二个人像素60为图像最后一行第二列的数据,…一直到最后一行的最后一列数据,后面紧接的是倒数第二行的第一列的数据,依此类推。
如果图像是24位或是32位数据的位图的话,位图数据区就不是索引而是实际的像素值了。下面说明一下,此时位图数据区的每个像素的RGB颜色阵列排布:
24位RGB按照BGR的顺序来存储每个像素的各颜色通道的值,一个像素的所有颜色分量值都存完后才存下一个下一个像素,不进行交织存储。
32位数据按照BGRA的顺序存储,其余与24位位图的方式一样。
像素的排布规则与前述一致。
对齐规则
讲完了像素的排列规则以及各像素的颜色分量的排列规则,最后我们谈谈数据的对齐规则。我们知道Windows默认的扫描的最小单位是4字节,如果数据对齐满足这个值的话对于数据的获取速度等都是有很大的增益的。因此,BMP图像顺应了这个要求,要求每行的数据的长度必须是4的倍数,如果不够需要进行比特填充(以0填充),这样可以达到按行的快速存取。这时,位图数据区的大小就未必是图片宽×每像素字节数×图片高能表示的了,因为每行可能还需要进行比特填充。
填充后的每行的字节数为:
,其中BPP(Bits Per Pixel)为每像素的比特数。
在程序中,我们可以表示为:
int iLineByteCnt = (((m_iImageWidth * m_iBitsPerPixel) + 31) >> 5) << 2;
这样,位图数据区的大小为:
m_iImageDataSize = iLineByteCnt * m_iImageHeight;
我们在扫描完一行数据后,也可能接下来的数据并不是下一行的数据,可能需要跳过一段填充数据:
skip = 4 - ((m_iImageWidth * m_iBitsPerPixel)>>3) & 3;
五、拾遗
至此,我们通过分析一个具体的位图文件例子详细地剖析了位图文件的组成。需要注意的是:我们讲的主要是PC机上的位图文件的构成,对于嵌入式平台,可能在调色板数据段与PC机的不同。如在嵌入式平台上常见的16位r5g6b5位图实际上采用的掩模的方式而不是索引的方式来表示图像。此时,在调色板数据段共有四个部分,每个部分为四个字节,实际表示的是彩色版规范。即:
第一个部分是红色分量的掩模
第二个部分是绿色分量的掩模
第三个部分是蓝色分量的掩模
第四个部分是Alpha分量的掩模(缺省为0)
典型的调色板规范在文件中的顺序为为:
00F8 0000 E007 0000 1F00 0000 0000 0000
其中
00F8 0000为FB00h=1111100000000000(二进制),是蓝红分量的掩码。
E007 0000为 07E0h=0000011111100000(二进制),是绿色分量的掩码。
1F00 0000为001Fh=0000000000011111(二进制),是蓝色分量的掩码。
0000 0000设置为0。
将掩码跟像素值进行“与”运算再进行移位操作就可以得到各色分量值。看看掩码,就可以明白事实上在每个像素值的两个字节16位中,按从高到低取5、6、5位分别就是r、g、b分量值。取出分量值后把r、g、b值分别乘以8、4、8就可以补齐每个分量为一个字节,再把这三个字节按BGR组合,放入存储器,就可以转换为24位标准BMP格式了。
这样我们假设在位图数据区有一个像素的数据在文件中表示为02 F1。这个数据实际上应为F102:
r = (F102 AND F800) >> 8 = F0h = 240
g= (F102 AND 07E0)>> 3 = 20h = 32
b=(F102 AND 001F) << 3 = 10h =16
至此我们就可以显示了。(本文结束)
参考资源:
1.wiki百科 bmp file format
http://en.wikipedia.org/wiki/BMP_file_format
2.gwwgle的专栏 BMP格式详解http://blog.csdn.net/gwwgle/archive/2009/11/06/4775396.aspx
3.匿名 BMP格式图像文件详析
扩展:fileinputformat详解 / bmp格式详解 / bmp文件格式详解
4.Singler的专栏位图文件(BMP)格式分析以及程序实现
【FILE HEADER 实例图解】14 bytes
typedef struct {
/* type : Magic identifier,一般为BM(0x42,0x4d) */
unsigned short int type;
unsigned int size;/* File size in bytes,全部的档案大小 */
unsigned short int reserved1, reserved2; /* 保留位 */
unsigned int offset;/* Offset to image data, bytes */
} FILEHEADER;
【INFO HEADER实例图解】40 bytes
typedef struct {
unsigned int size;/* Info Header size in bytes */
int width,height;/* Width and height of image */
unsigned short int planes;/* Number of colour planes */
unsigned short int bits; /* Bits per pixel */
unsigned int compression; /* Compression type */
unsigned int imagesize; /* Image size in bytes */
int xresolution,yresolution; /* Pixels per meter */
unsigned int ncolours; /* Number of colours */
unsigned int importantcolours; /* Important colours */
} INFOHEADER;
【RAW DATA实例图解】
刚刚的File Header共14bytes,Info Header为40bytes,「imagesize」 = 1024 bytes,所以「14 + 40 + 1024 = 1078」, 即等于File Header中「size」的大小。下面我只提取部分的资料,反正全部的档案,減去Header档54位元组,剩下的就是点阵图的资料。
在Info Header中的「bits」为32 bits,故四个位元组一组,若24 bits,则三个位元组一组,例子中的长宽各为16,以「Z」字型来看,一列则为16组,即16 X 4 = 64 bytes。注意的是,图中是以A、B、C ~ …的读取顺序来解说,但实际上程序所读取到的通常回是反过来的,即… ~ C、B、A。另外,下图是以「BGRA」排列。
扩展:fileinputformat详解 / bmp格式详解 / bmp文件格式详解
三 : FLAC 格式详解
http://blog.csdn.net/ffgamelife/article/details/7893747四 : .dll格式文件详述
很多问题通过重新注册Shell32.dll文件就能简单地得到修复,Shell32.dll保存有关Windows界面的信息,并被用来打开文件和网页。(www.61k.com)例如,重新安装这个DLL文件能在桌面“图形选项”对话框下重新保存JPEG或GIF图片预览(右击桌面,选择“选项”就能看到对话框)。它同时还能修复启动“新建快捷方式向导”功能(右击桌面,选择“新建”→“快捷方式”)以及修复非常容易损坏的文件夹图标双击功能。
若想重新保存这个DLL文件,选择“开始”\“运行”,键入regsvr32 /i shell32.dll,按回车键。会有信息提示你这个命令是否生效(不过得重启电脑)。
重新保存Windows XP图片和传真浏览器。如果双击文件图标不能浏览图片或传真,可以重新注册浏览器的DLL.选择“开始”\“运行”,键入regsvr32 /i shimgvw.dll,按回车键。同样的,会有信息弹出提示这个DLL是否已经修复了这个问题。
激活XP中的“添加网络空间向导”。有时重新保存一个破损的功能要求数次运行regsvr32 /i命令,每个需要重新保存数据的DLL都应运行一次。例如,如果在“我的网络空间”文件夹窗口左侧面板内点击“添加网络空间”但毫无反应的情况下,你在Windows“运行”栏内依次运行三个命令就能重新激活“我的网络空间”。操作是:选择“开始”\“运行”,键入regsvr32 /i netplwiz.dll,按回车键。接下来相同操作,键入regsvr32 /i mshtml.dll命令行,最后运行regsvr32 /i shell32.dll命令行。
重新保存快速启动栏。如果在任务栏右击,选择“工具栏”\“快速启动栏”,只能收到一条错误信息提示说工具栏未能建立,你可能丢失了快速启动栏文件夹、注册表项或其他重要的文件。快速启动栏文件夹应该在C:\Documents and Settings\profile name\Application Data\Microsoft\Internet Explorer中。如果没有,你可以手动创建(点击“文件”\“新建”,在刚刚提到的这个文件夹中新建一个文件夹,并命名为快速启动栏),也可以让Windows进行这项操作,操作是:选择“开始”\“运行”,键入ie4uinit.exe,按回车键。试试是否能显示快速启动栏。
如果仍然没有反应,选择“开始”\“运行”,键入regsvr32 /i shell32.dll,按回车键。然后,点击“开始”\“运行”,键入regsvr32 /i browseui.dll,按回车键。
Windows XP的“体重”比起其它系统,已经成为一个不折不扣的“大胖子”。各优化“瘦身”技巧早已布满各大IT报刊杂志,望着Windows XP的“Windows”成百上千的DLL(动态链接库)文件,为使系统更清爽,我们可以通过regsvr32.exe程序重新注册修复和反注册屏蔽系统功能,以减少系统资源。
友情链接:regsvr32.exe使用详解:
regsvr32.exe是32位系统下使用的DLL注册和反注册工具,使用它必须通过命令行的方式使用,格式是:
regsvr32 [/u] [/s] [/n] [/i[:cmdline]] DLL文件名
命令可以在“开始→运行”的文本框中,也可以事先在bat批处理文档中编写好命令。未带任何参数是注册DLL文件功能,其它参数对应功能如下:
ole32.dll .dll格式文件详述
/u:反注册DLL文件;
/s:安静模式(Silent)执行命令,即在成功注册/反注册DLL文件前提下不显示结果提示框。[www.61k.com) /c:控制端口;
/i:在使用/u反注册时调用DllInstall;
/n:不调用DllRegisterServer,必须与/i连用。
单独运行regsvr32.exe程序,可以看到弹出一“No DLL name specified”的错误提示框,并且可以看到参数原英文提示信息(如图1)。
图1
输入DLL文件名时,如果待处理的是非系统文件,必须在文件名前添加文件绝对路径,必须注意的是文件路径不包含中文,否则很可能导致处理失败。如果碰到regsvr32不能正常执行时,很可能系统文件遭到破坏,因为使用regsvr32.exe时会调用到Kernel32.dll、User32.dll和Ole32.dll三个文件,在DOS模式或其它系统替换正常文件即可解决。
一、屏蔽对压缩文件的支持
早在Windows千禧版(Me)时,微软就在系统内置了对ZIP文件的支持,不过微软似乎并不关心其功能,以至于在Windows Server 2003的ZIP功能也仅仅停留在把ZIP文件当成文件夹浏览、压缩等支持。主流压缩软件WinRAR已经遍布天下,Windows自带的ZIP浏览自然有理由丢之门外。
(如图2)点击“开始→运行”,在运行输入框中输入“regsvr32 /u zipfldr.dll”(不包括引号,下同),回车即可。同样,如果不喜欢系统查看CAB压缩包,输入“regsvr32 /u cabview.dll”来取消对cabview.dll的注册。
ole32.dll .dll格式文件详述
图2
二、屏蔽视频预览和刻录功能
每当用资源管理器选中一个视频文件时,XP会在左侧面板预览显示,不过这对于较大的视频文件时,往往要读上半天。[www.61k.com]用户在大多数情况下并不需要预览,禁止的方法也非常简单,在运行输入框中输入“regsvr32 /u shmedia.dll”即可撤消视频预览(屏蔽前和屏蔽后的资源管理器对比如图3)。
图3
三、屏蔽Windows图片和传真查看器
默认情况下,Windows XP默认的图片查看工具是“Windows图片和传真查看器”,虽然通过安装
ACDSee等其它看图软件可以绕开图片查看器,但未真正“消灭”此工具。在运行输入框中输入“regsvr32 /u shimgvw.dll”,回车即可弃图片查看器于系统外(屏蔽前和屏蔽后的资源管理器对比如图4)。
ole32.dll .dll格式文件详述
图4
四、拯救失落的“搜索”
扩展:dll文件格式 / 破解文件是dll格式的 / 破解文件是dll格式
不知是与软件的冲突还是优化错误,最近一些朋友的Windows XP的搜索界面空白无物,昔日的搜索助手已“不见踪影”,右窗口仍然有文件列表框,使用其它系统功能正常(如图5,Windows Server 2003也有类似问题)。[www.61k.com)何故?
可以肯定,系统的搜索功能文件出错,后来知道是urlmon.dll此链接库注册不正常,解决方法也相当简单:在运行输入框中输入“regsvr32 urlmon.dll”,回车后,重新运行搜索窗口,即可恢复。
图5
五、纠正IE保存mht网页错误
ole32.dll .dll格式文件详述
点击Internet Explorer“文件→另存为”命令菜单,在“保存类型”中选择“Web电子邮件案(.mht)”格式后保存文件错误(如图6)。(www.61k.com)
图6
在运行输入框中输入“regsvr32 inetcomm.dll”,回车即可解决。
如果在使用使用OE时提示“无法启动Outlook Express。应用程序无法创建字体缓存对象。计算机内容不足或磁盘已满。请与Microsoft支持部门联系以获取更多的帮助。(0x8007000E,14000)”,点击“确定”后又弹出“MSOE.dll无法初始化,Outlook Express无法启动。Outlook Express可能没有正确安装。”的提示框(如图7),从提示的信息似乎是系统磁盘空间满,其实这也是“inetcomm.dll”没有正确链接导致,通过同样方法解决。
图7
六、在使用Windows Update更新操作时,提示“IEXPLORE错误”,无法继续更新操作。
首先在运行输入框中输入“regsvr32 /u wuv3is.dll”反注册此链接库,接着进入“X:\Program
Files\Windows Update”(X为Windows XP的在盘符),删除wuv3is.dll文件。最后重新执行Windows Update操作,系统会重新生成wuv3is.dll文件,错误提示也不会再弹出。
ole32.dll .dll格式文件详述
今天又中木马了,木马咋越来越多了,弄的我的心跋凉跋凉的,经过一查找,发现原来是一个名叫XX的木马,到木马存放目录下面,发现了一个dll文件,心想:小样的,你穿上马甲我也认识你,于是就单击--右键—删除。(www.61k.com]。。。一个dll文件就这样被删掉了,不要对dll太狠了,要知道这可是程序员的血汗啊。。为什么这样说呢?那我们先来认识一下什么是dll
dll实际上是动态链接库的缩写,从windows1.0开始,动态链接库就是整个操作系统的基础,那么这有什么作用呢?在dos时代,程序员是通过编写程序来达到预期的目的的,每实现一个目的就需要编写一个程序,这样下去,简单的还好,要是复杂的程序话,那乞不是既浪费时间,又浪费青春。于是聪明的程序员们想出了一个办法,把的实现一定功能的程序模块存放在一个文件当中,以API函数形式存放在dll当中,当编写程序的时候,需要用到这个功能,那么直接从这个文件当中调用就可以了,于是就出现了dll——动态连接库。
那么动态连接库有什么作用呢?
优点之一,上面已经提过了,程序员把一些模块压入dll文件之后,在要运行程序的时候只需要调用动态链接库就可以了,而并不需要把dll加载到内存中,节省了大量的内存空间,可以方便运行其他的程序,许多朋友在关机的时候,一直关不了,整的郁闷,其实就是因为系统所调用的dll太多,导致了计算机性能的骤减,其实只需要把一些无关紧要的dll删除掉就可以了
优点之二,在一个很大的游戏中,通常需要调用许许多多的动态链接库来给玩家一个美观震撼的效果,《极品飞车9---最高通缉》让本文作者我感受到了一种从来没有感受过的感觉,那种感觉就象是初恋的味道,画面效果棒极了。可是要实现这样一个效果,需要许多程序员编写不同的dll来互相协助,那么这些dll可以用vc++,vb,Delphi,asm等等来完成,只要每个程序员负责编写一个功能,这样只要调用在一起就方便多了,节省了大量的人力,物力,财力。
既然dll有这么多好处,而且又这么方便,我那木马的程序员又做出过什么呢?他只不过
调用了系统的dll函数罢了(windwos系统中有3个非常重要dllkernel32.dlluser32.dllgdi32.dll其中包括windows系统诸多功能的函数)
呵呵,其实话不能这样说。木马的编写者也需要有很深的工夫哦,那么我们现在以黑客之门做为一个例子来看看,这个例子需要的工具depend walker,可以在黑客基地论坛黑客兵器库http://bbs.hackbase.com/viewthread.php?tid=2860045&fpage=1下载
我们首先来看看用depend walker打开黑客之门的动态链接库
ole32.dll .dll格式文件详述
ole32.dll .dll格式文件详述
我们用他来打开黑客之门的dll,可以看到他的版权等等,对于有位图,音乐,图表,对话框的dll,我们也可以看到他里面的全部内容。(www.61k.com)我们可以修改版权,更换位图,更换音乐,更换对话框,总之只有你想不到的,没有你做不到的。
那么既然dll被这样多程序调用,如果结束掉这个木马后门dll的调用过程,那么这个后门是不是没用啦,那回答当然是肯定的,那么如何知道DLL文件被几个程序使用呢?
我们只需要:
运行Regedit,进入HKEY_LOCAL_MACHINE\Software\Microsrft\Windows\Current-
Version\SharedDlls子键查看,其右边窗口中就显示了所有DLL文件及其相关数据,其中数据右边小括号内的数字就说明了被几个程序使用,(2)表示被两个程序使用,(0)则表示无程序使用,可以将其删除。
嘿嘿,这下知道window优化大师那分析dll的原理了吧。
在黑客基地论坛的新手学堂里,经常看到有人求助:我的搜索栏什么也不能显示了,怎么办啊?如图
ole32.dll .dll格式文件详述
扩展:dll文件格式 / 破解文件是dll格式的 / 破解文件是dll格式
其实那是因为dll没有注册造成的。(www.61k.com]
只需要在开始---运行—然后注册两个dll然后重新启动就可以了,具体方法是
regsvr32 vbscript
regsvr32 jscript
当你看到跳出个对话框,里面写着,vbscript 中的dllregister server成功的时候,说明已经注册成功了
什么?还要注册?或许你看到这里开始疑问了,这什么注册啊?是不是象进入一个论坛,需要注册一个帐号才能进入一样呢?
其实系统里面的dll是分为两类的。一类是需要注册的,一类是不需要注册的。
大多数都是通过命令regsvr32来注册的。而windows为了减少所调用的dll的数量,提升计算机的性能以及速度。通常只把几个重要的dll默认就注册了,不常用的dll需要你自己去注册。而注册之后,系统
ole32.dll .dll格式文件详述
就可以调用他了,从而具有了相应的功能。[www.61k.com)
而当你认为你的计算机所调用的无用dll太多的时候,可以通过命令regsvr32 /u dll的名称来反注册。 有些朋友的爱机会出现这样的情况,在启动的时候,错误对话框中提示DLL文件丢失
这是因为在卸载文件时会提醒你删除某个DLL文件可能会影响其他应用程序的运行。所以当你卸载软件时,就有可能误删共享的DLL文件。一旦出现了丢失DLL文件的情况,如果你能确定其名称,可以在Sysbckup(系统备份文件夹)中找到该DLL文件,将其复制到System文件夹中。如果这样不行,在电脑启动时又总是出现“***dll文件丢失……”的提示框,你可以在“开始/运行”中运行Msconfig,进入系统配置实用程序对话框以后,单击选择“System.ini”标签,找出提示丢失的DLL文件,使其不被选中,这样开机时就不会出现错误提示了。
让Windows系统摆脱加载项错误
当在系统中频繁安装和卸载一些应用程序,或者频繁对系统进行杀毒操作的话,系统在日后的启动过程中可能会出现相关内容无法加载的尴尬现象。当我们不小心遭遇这样的尴尬现象时,系统启动效率将会受到明显影响;为了提高系统启动效率,本文下面就将一些常见的启动加载错误总结出来,并对它们提出相应的解决办法,希望这些内容能对各位有用!
1、让系统摆脱cnsmin.dll无法加载尴尬
当系统中安装过3721软件,之后又没有正确将它从系统中卸载干净的话,那么系统在日后的启动过程中,可能会遇到cnsmin.dll加载失败的故障提示,面对这种故障提示,我们可以按照下面的操作方法来尝试让系统摆脱cnsmin.dll无法加载的尴尬:
首先依次单击系统桌面中的“开始”/“运行”命令,在弹出的系统运行对话框中,输入字符串命令“msconfig”,单击回车键后,打开系统的实用程序配置窗口;
其次单击该配置窗口中的“启动”标签,然后在对应的标签页面,检查一下该页面中的“cnsmin”项目是否处于选中状态,一旦选中的话必须及时将它取消选中,再单击“确定”按钮,最后重新启动一下计算机系统,相信这么一来系统就不会出现cnsmin.dll无法加载的尴尬了;
如果上面的方法还无法让系统摆脱cnsmin.dll无法加载尴尬的话,我们可以依次单击系统桌面的“开始”/“运行”命令,在弹出的系统运行对话框中,输入字符串命令“regedit”,单击“确定”按钮后,打开本地系统的注册表编辑窗口;
在该编辑窗口的左侧列表区域,将鼠标定位于“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run”注册表子键(如图1所示),然后将该子键下面的3721加载项删除掉,再刷新一下系统注册表接就可以让系统摆脱cnsmin.dll无法
ole32.dll .dll格式文件详述
加载的尴尬了。[www.61k.com)
图 1
2、让系统摆脱cmicnfg.cpl无法加载尴尬
有时候系统在启动的过程中会碰到cmicnfg.cpl加载错误的故障提示,同时系统还弹出找不到指定模块的提示,系统之所以会出现这种启动加载尴尬,多半是我们平时不按照正确顺序关闭计算机系统,或者随意使用工具程序对磁盘分区容量进行调整时造成系统文件发生丢失引起的。要想让系统摆脱cmicnfg.cpl无法加载尴尬,我们可以进行下面的尝试操作:
首先用鼠标右键单击系统桌面中的“我的电脑”图标,从弹出的快捷菜单中执行“属性”命令,打开系统的属性设置窗口,单击该窗口中的“硬件”标签,并在对应标签页面中单击“设备管理器”按钮,打开系统的设备列表窗口;
用鼠标展开该窗口中的“声音、视频和游戏控制器”项目,然后用鼠标右键单击该分支项目下面的指定声卡设备,从弹出的快捷菜单中执行“卸载”命令(如图2所示),这样一来声卡设备的驱动程序就被自动从系统中彻底卸载干净了;
图 2
紧接着将Windows系统的安装光盘放置到物理光驱中,并依次单击系统桌面中的“开始”/“运行”命令,在弹出的系统运行文本框中输入字符串命令“sfc /scannow”,单击回车键后,系统就会自动执行系统文件的修复操作;等到修复操作结束后,将Windows系统的安装光盘从物理光驱中取出来,同时重新启动一下
ole32.dll .dll格式文件详述
计算机系统,之后再将声卡驱动程序重新安装一下,这么一来cmicnfg.cpl无法加载的故障提示就会被消除了。[www.61k.com)
3、让系统摆脱soundmix.dll无法加载尴尬
当系统在启动的时候不小心遭遇到soundmix.dll无法加载的故障现象时,我们可以尝试使用下面的方法来让系统摆脱这种启动加载尴尬:
首先按下Ctrl+Alt+Del复合键,打开系统的任务管理器窗口,单击该窗口中的“进程”标签,并在对应标签页面中检查一下是否有自己不熟悉的可疑进程,要是发现的话我们必须先将它们结束掉;
其次依次单击系统桌面的“开始”/“运行”命令,在弹出的系统运行对话框中,输入字符串命令“regedit”,单击“确定”按钮后,打开本地系统的注册表编辑窗口;
接下来单击该编辑窗口菜单栏中的“编辑”选项,从弹出的下拉菜单中执行“查找”命令,打开如图3所示的查找对话框,选中其中的“项”、“值”以及“数据”复选项,同时在“查找目标”文本框中输入“soundmix.dll”,再单击“查找下一个”按钮,这样系统就会自动将与“soundmix.dll”相关的键值全部找出来,将这些找到键值或数据全部删除掉,最后重新启动一下计算机系统,就能让系统摆脱soundmix.dll无法加载的尴尬了。
扩展:dll文件格式 / 破解文件是dll格式的 / 破解文件是dll格式
图 3
4、让系统摆脱wxr5go93.dll无法加载尴尬
如果我们在启动系统的过程中,遇到“X:\Windows\Downlo~l\wxr5go93.dll”无法加载的错误提示时,可以考虑使用下面的方法来解决该故障提示:
首先依次单击系统桌面中的“开始”/“运行”命令,在弹出的系统运行对话框中,输入字符串命令“msconfig”,单击回车键后,打开系统的实用程序配置窗口;
其次将该配置窗口“一般”标签页面中的“有选择的启动”项目选中,同时将“加载系统服务”也选中,并把其他项目的选中状态全部取消;
ole32.dll .dll格式文件详述
接着单击“服务”标签,打开如图4所示的标签页面,并将其中的“隐藏所有Microsoft服务”项目选中,同时把其他项目的选中状态全部取消,再单击“确定”按钮,最后重新启动一下计算机系统,相信这么一来系统就不会出现cnsmin.dll无法加载的尴尬了。[www.61k.com)
扩展:dll文件格式 / 破解文件是dll格式的 / 破解文件是dll格式
本文标题:ip报文格式详解-bmp文件格式详解61阅读| 精彩专题| 最新文章| 热门文章| 苏ICP备13036349号-1