您好,欢迎来到保捱科技网。
搜索
您的当前位置:首页获取EXE版本信息 GetFileVersionInfo

获取EXE版本信息 GetFileVersionInfo

来源:保捱科技网

需要三个函数配合GetFileVersionInfoSize,GetFileVersionInfo,VerQueryValue。


1.  前两个函数的使用,为VerQueryValue做准备

	DWORD dwInfoSize, dwHandle;
	dwInfoSize = ::GetFileVersionInfoSize(m_szAppFilePath, &dwHandle);
	if(dwInfoSize <= 0)
		ASSERT(FALSE);

	BYTE* pData = new BYTE[dwInfoSize];

	VERIFY(::GetFileVersionInfo(m_szAppFilePath, NULL,
		dwInfoSize, (LPVOID)pData));
2. 获取主次版本号

	VERIFY(::VerQueryValue((LPCVOID)pData, _T("\\"), &lpBuffer, &uLength));

	m_dwProductVersionMS = ((VS_FIXEDFILEINFO*)lpBuffer)->dwProductVersionMS;
	m_dwProductVersionLS = ((VS_FIXEDFILEINFO*)lpBuffer)->dwProductVersionLS;

3. 获取版权信息

	VERIFY(::VerQueryValue((LPCVOID)pData,
		_T("\\StringFileInfo\\080404b0\\LegalCopyright"),
		&lpBuffer, &uLength));
	CString szCopyright((LPCTSTR)lpBuffer, (int)uLength);

4. 获取产品名称

	VERIFY(::VerQueryValue((LPCVOID)pData,
		_T("\\StringFileInfo\\080404b0\\ProductName"),
		&lpBuffer, &uLength));
	CString szProductName((LPCTSTR)lpBuffer, (int)uLength);

5. 获取公司名称

	VERIFY(::VerQueryValue((LPCVOID)pData,
		_T("\\StringFileInfo\\080404b0\\CompanyName"),
		&lpBuffer, &uLength));
	CString szManufacture((LPCTSTR)lpBuffer, (int)uLength);

6.下面为系统性的解释

查询什么主要有VerQueryValue的第二个参数来控制,它的取值如下:

"\" 获取文件的VS_FIXEDFILEINFO结构
"\VarFileInfo\Translation" 获取文件的翻译表
"\StringFileInfo\languagecodepage\stringname" 获取文件的字串信息,languagecodepage指的是语言代码页【080404b0为中文,040904E4为英文】。



因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- baoaiwan.cn 版权所有 赣ICP备2024042794号-3

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务