加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

windows – 设置EXE VersionInfo

发布时间:2020-12-14 01:42:40 所属栏目:Windows 来源:网络整理
导读:有关我通过 VerQueryValue收到的版本Exe文件的信息.是否有可以注册(建立或更改)此类信息的反函数(WinApi或Delphi)? 这里,例如,有一个能够这样做的程序.它怎么可能有用( http://www.angusj.com/resourcehacker)? 版本信息通过资源存储;编辑您只需编辑该资源
有关我通过 VerQueryValue收到的版本Exe文件的信息.是否有可以注册(建立或更改)此类信息的反函数(WinApi或Delphi)?
这里,例如,有一个能够这样做的程序.它怎么可能有用( http://www.angusj.com/resourcehacker)?
版本信息通过资源存储;编辑您只需编辑该资源.这是我发现的一个单元,可以克隆现有的文件版本信息并将其附加到另一个文件.从这段代码开始,你可以很容易地做你想要的东西(它是由我的一个朋友编写的,可以公开获得):
unit cloneinfo;

interface

uses Windows,SysUtils;

type
 LANGANDCODEPAGE = record
  wLanguage: Word;
  wCodePage: Word;
 end;

procedure clone(sFile,output:string);

implementation

procedure clone(sFile,output:string);
var
  dwHandle,cbTranslate: cardinal;
  sizeVers: DWord;
  lpData,langData: Pointer;
  lpTranslate: ^LANGANDCODEPAGE;
  hRes : THandle;
begin
 sizeVers := GetFileVersionInfoSize(PChar(sFile),dwHandle);
 If sizeVers = 0 then
 exit;
 GetMem(lpData,sizeVers);
 try
  ZeroMemory(lpData,sizeVers);
  GetFileVersionInfo (PChar(sFile),sizeVers,lpData);
  If not VerQueryValue (lpData,'VarFileInfoTranslation',langData,cbTranslate) then
  exit;
  hRes := BeginUpdateResource(pchar(output),FALSE);
  //For i := 0 to (cbTranslate div sizeof(LANGANDCODEPAGE)) do
  //begin
  lpTranslate := Pointer(Integer(langData) + sizeof(LANGANDCODEPAGE));
  UpdateResource(hRes,RT_VERSION,MAKEINTRESOURCE(VS_VERSION_INFO),lpTranslate^.wLanguage,lpData,sizeVers);
  //end;
  EndUpdateResource(hRes,FALSE);
 finally
  FreeMem(lpData);
 end;
end;


end.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读