C++获取exe文件版本号

#pragma comment(lib, "version.lib")

//返回文件版本号
//@params:filename:文件名
string GetFileVersion(LPCWSTR filename)
{ 
	string asVer = "";
	VS_FIXEDFILEINFO *pVsInfo;
	unsigned int iFileInfoSize = sizeof(VS_FIXEDFILEINFO);
	int iVerInfoSize = GetFileVersionInfoSizeW(filename, NULL); 
	if(iVerInfoSize != 0)
	{ 
		char *pBuf = NULL;

		while(!pBuf)
		{
			pBuf = new char[iVerInfoSize];
		}
		if(GetFileVersionInfoW(filename, 0, iVerInfoSize, pBuf))
		{ 
			if(VerQueryValueA(pBuf, "\\", (void **)&pVsInfo, &iFileInfoSize))
			{ 
				sprintf(pBuf, "%d.%d.%d.%d", HIWORD(pVsInfo->dwFileVersionMS), LOWORD(pVsInfo->dwFileVersionMS), HIWORD(pVsInfo->dwFileVersionLS), LOWORD(pVsInfo->dwFileVersionLS));
				asVer = pBuf; 
			} 
		} 
		delete pBuf;
	}
	return asVer;
}

你可能感兴趣的:(C++)