100分请教关于修改程序版本信息的问题 ( 积分: 100 )

B

bbswing

Unregistered / Unconfirmed
GUEST, unregistred user!
我用第一种方法,将一个exe的版本信息拷贝到另一个程序能够成功:<br>var<br>fh:THandle;<br>findRes,loadRes,bh:HRSRC;<br>lockRes:pointer;<br>begin<br>&nbsp;&nbsp;fh:=LoadLibrary(PChar(Application.ExeName));<br>&nbsp;&nbsp;findRes:=FindResource(fh,PChar(1),RT_VERSION);<br>&nbsp;&nbsp;loadRes:=LoadResource(fh,findRes);<br>&nbsp;&nbsp;lockRes:=LockResource(loadRes);<br>&nbsp;&nbsp;bh:=BeginUpdateResource(PChar('tmp.exe'),false);<br>&nbsp;&nbsp;UpdateResource(bh,RT_VERSION,PChar(1),2052,lockRes,SizeofResource(fh,findRes));<br>&nbsp;&nbsp;EndUpdateResource(bh,false);<br>end;<br><br><br>但是如果我自定义信息写入的话就什么都没有了,比如将公司名称改为&quot;New&nbsp;CompanyName&quot;:<br>var<br>buf,value:pChar;<br>fSize,iSize:DWORD;<br>bh:HRSRC;<br>begin<br>&nbsp;&nbsp;fSize:=GetFileVersionInfoSize(PChar('tmp.exe'),fSize);<br>&nbsp;&nbsp;if&nbsp;fSize&gt;0&nbsp;then<br>&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;buf:=AllocMem(fSize);<br>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;GetFileVersionInfo(PChar('tmp.exe'),0,fSize,Pointer(buf))&nbsp;then<br>&nbsp;&nbsp;&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;VerQueryValue(Pointer(buf),PChar('/StringFileInfo/080403A8/CompanyName'),Pointer(value),iSize);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;StrCopy(value,'New&nbsp;ComPanyName');<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bh:=BeginUpdateResource(PChar('tmp.exe'),False);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UpdateResource(bh,RT_VERSION,PChar(1),2052,Pointer(value),fSize);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EndUpdateResource(bh,false);<br>&nbsp;&nbsp;&nbsp;&nbsp;end;<br>&nbsp;&nbsp;end;<br>end;<br><br><br>请问怎么修改比如CompanyName、FileVersion、FileDescription、LegalCopyright等信息。<br>如果程序加了壳了,应该就不可以修改图标和版本信息了吧,但是我在网上看的一些软件打包生成的东西是加了壳的,但还可以自定义图标和版本信息,请问怎么实现?
 
替换图标组也是同样的问题,不能直接从TIcon格式替换
 
顶,我也关注这个问题,希望有牛人可以解决...[:D]
 
这个问题好,我也想知道.
 
顶部