软件需要更新,需要修改DLL或者ExE 的版本号,很多时候依赖VS2008 这样的IDE中去修改,然后编译生成。
下面说的方法是通过写代码区修改二进制文件来达到修改版本号的目的。
主要步骤如下:
1. 获取文件头信息大小
2.获取文件头信息内容
3.根据获取的信息内容,通过VerQueryValue函数去获取语言信息
4..根据获取的信息内容,通过VerQueryValue函数获取其他信息,如文件版本信息,产品版本信息等
5.根据获取的版本信息,修改内存内容
6. 通过BeginUpdateResource,UpdateResource,EndUpdateResource 完成资源更新
------------------------------------------------------------------------------
下面是主要代码:
其中CVersion 类是为了将输入的字符串信息分割成4位的数字而已,代码中的version.GetVersion(1) 就是获取版本的第2位.
#include "stdafx.h"
#include <Windows.h>
#include "Version.h"
typedef struct _tagLanguage
{
WORD wLanguage;
WORD wCodePage;
} tagLanguage, * LPLanguage;
int _tmain(int argc, _TCHAR* argv[])
{
if (argc!=3)
{
return 0;
}
TCHAR* FileName = a