关于我通过VerQueryValue收到的版本Exe-file的信息。是否有可以注册(建立或更改)这些信息的反函数(WinApi或Delphi)?这里,例如,有一个能够这样做的程序。它可能如何工作(http://www.angusj.com/resourcehacker)?设置EXE版本信息
回答
版本信息通过资源存储;编辑您只需编辑该资源。这是我发现的一个单元,可以克隆现有的文件版本信息并将其附加到另一个文件。这是很容易做到的,你想从这个开始的代码是什么(它是由我的一个朋友编码,并提供公众):
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), 0, sizeVers, lpData);
If not VerQueryValue (lpData, '\VarFileInfo\Translation', 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.
这只是语言和代码页信息。那么[VS_FIXEDFILEINFO](http://msdn.microsoft.com/en-us/library/ms646997%28v=VS.85%29.aspx)? +1无论如何 – TLama
感谢大,现在我将从事研究... –
如果这是你在互联网上找到的单位,你需要更加小心的许可。至少,你应该提供一个链接到源代码。 (另外,看看http://en.wikipedia.org/wiki/Run-on_sentence。) –
- 1. 获取.exe的版本信息
- 2. 版本信息.EXE gcc和windres
- 3. 获取.exe版本信息usng Ruby
- 4. 设置现有.dll的版本信息?
- 5. 在Windows中设置假版本信息
- 6. 配置没有任何版本信息 - 假设配置为版本1.5
- 7. DirectX版本信息
- 8. 如何通过cmake将版本信息添加到.exe或.dll
- 9. 信息设置
- 10. 设置多个C++ DLLS的版本信息
- 11. 从.ABR文件(Photoshop笔刷设置)中读取版本信息
- 12. 从代码中设置Delphi 7项目“版本信息”?
- 13. 无法在IExpress中为Self Extractor设置版本信息
- 14. 如何通过管道设置版本信息?
- 15. python-qgis版本信息
- 16. UWP SDK版本信息
- 17. maven build - 版本信息
- 18. 信息oracle版本c#
- 19. Perl模块,版本信息
- 20. NSURLRequest,NSURLConnection版本信息
- 21. Intellij IDEA版本信息
- 22. 获取Android版本信息
- 23. 的Windows版本信息
- 24. Java版本统计信息
- 25. Visual Studio - .EXE控制台应用程序的设置版本号
- 26. 从sqlite信息设置textview
- 27. 存储设置信息
- 28. 设置为分类信息
- 29. elasticsearch集群设置信息
- 30. 在Dunit项目中,EXE版本信息被禁用,我如何恢复?
这是由[版本资源]确定(http://msdn.microsoft。 COM/EN-US /库/ aa381058(VS.85)的.aspx)。使用['UpdateResource'](http://msdn.microsoft.com/en-us/library/ms648049(VS.85).aspx)来修改它。 –
这里是一个链接到一个程序与源代码如何设置版本信息。 Delphi 2009和兼容。 [更新-setversion-EXE到组,文件版本信息,在-RES-或-EXE](http://www.jasontpenny.com/blog/2009/09/05/updated-setversion-exe- to-set-file-version-info-in-res-or-exe /) –