VC 获取,修改文件版本

struct VS_FIXEDFILEINFO { 
DWORD dwSignature;             //=0xFEEFO4BD  
DWORD dwStrucVersion;          //该结构的版本信息,分高低版本 
DWORD dwFileVersionMS;         //主文件版本 
DWORD dwFileVersionLS;         //次文件版本 
DWORD dwProductVersionMS;      //主产品版本 
DWORD dwProductVersionLS;      //次产品版本 
DWORD dwFileFlagsMask;         //文件标志掩码 
DWORD dwFileFlags;             //文件标志(是否包含调试版本,动态版本结构...) 
DWORD dwFileOS;                //文件原定的操作系统(VOS_DOS,VOS_NT,VOS__WINDOWS16...) 
DWORD dwFileType;              //文件类型(VFT_UNKNOWN,VFT_APP,VFT_DLL...)
DWORD dwFileSubtype;           //当dwFileType为VFT_APP或VFT_DLL时该值为0,当为驱动信息VFT_APP或字体信息时该值包含其具体的信息 
DWORD dwFileDateMS;            //主时间戳 
DWORD dwFileDateLS;            //次时间戳 
};

===============================================
struct st_Language 
{
 WORD wLanguageID;
 WORD wCodePage;
};


CString str("D:\\test\\test.exe");

 DWORD dwSize = GetFileVersionInfoSize(str,NULL);
 if(0 == dwSize) return;
 LPBYTE pBlock = (BYTE*)malloc(dwSize);
 bool b = GetFileVersionInfo(str,0,dwSize,pBlock);

 char* pVerValue = NULL;
 UINT nlen1 = 0;
 VerQueryValue(pBlock,TEXT("file://VarFileInfo//Translation"),
  (LPVOID*)&pVerValue,&nlen1);


 //获取语言
 char* pLanValue = NULL;
 UINT nLen2 = 0;
 VerQueryValue(pBlock,"VarFileInfo\\Translation",(LPVOID*)&pLanValue,&nLen2);
 //080404b0为中文
 st_Language stlang = *((st_Language *)pLanValue);

 //获取版本属性
 VerQueryValue(pBlock,TEXT("file://%22),(LPVOID*)%26pVerValue,%26nlen1/);
 VS_FIXEDFILEINFO *pfixfileinfo = (VS_FIXEDFILEINFO *)pVerValue;
//修改属性
 pfixfileinfo->dwFileVersionLS = 1234;
 pfixfileinfo->dwFileVersionMS = 4321;
 pfixfileinfo->dwProductVersionLS = 101;
 pfixfileinfo->dwProductVersionMS = 1010;

//修改资源
 HANDLE handle = BeginUpdateResource(str,FALSE);
 BOOL result  = UpdateResource(handle
  ,RT_VERSION
  ,MAKEINTRESOURCE(1)
  ,stlang.wLanguageID
  ,pBlock
  ,dwSize);

 if (result == FALSE) 
 { 
  AfxMessageBox("Updata Resource False."); 
 } 
 EndUpdateResource(handle,FALSE);


free(pBlock);


转帖:http://www.cppblog.com/kyelin/archive/2007/08/20/30433.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值