B
bbswing
Unregistered / Unconfirmed
GUEST, unregistred user!
我用第一种方法,将一个exe的版本信息拷贝到另一个程序能够成功:<br>var<br>fh:THandle;<br>findRes,loadRes,bh:HRSRC;<br>lockResointer;<br>begin<br> fh:=LoadLibrary(PChar(Application.ExeName));<br> findRes:=FindResource(fh,PChar(1),RT_VERSION);<br> loadRes:=LoadResource(fh,findRes);<br> lockRes:=LockResource(loadRes);<br> bh:=BeginUpdateResource(PChar('tmp.exe'),false);<br> UpdateResource(bh,RT_VERSION,PChar(1),2052,lockRes,SizeofResource(fh,findRes));<br> EndUpdateResource(bh,false);<br>end;<br><br><br>但是如果我自定义信息写入的话就什么都没有了,比如将公司名称改为"New CompanyName":<br>var<br>buf,valueChar;<br>fSize,iSizeWORD;<br>bh:HRSRC;<br>begin<br> fSize:=GetFileVersionInfoSize(PChar('tmp.exe'),fSize);<br> if fSize>0 then<br> begin<br> buf:=AllocMem(fSize);<br> if GetFileVersionInfo(PChar('tmp.exe'),0,fSize,Pointer(buf)) then<br> begin<br> VerQueryValue(Pointer(buf),PChar('/StringFileInfo/080403A8/CompanyName'),Pointer(value),iSize);<br> StrCopy(value,'New ComPanyName');<br> bh:=BeginUpdateResource(PChar('tmp.exe'),False);<br> UpdateResource(bh,RT_VERSION,PChar(1),2052,Pointer(value),fSize);<br> EndUpdateResource(bh,false);<br> end;<br> end;<br>end;<br><br><br>请问怎么修改比如CompanyName、FileVersion、FileDescription、LegalCopyright等信息。<br>如果程序加了壳了,应该就不可以修改图标和版本信息了吧,但是我在网上看的一些软件打包生成的东西是加了壳的,但还可以自定义图标和版本信息,请问怎么实现?