c_cpp 打印文件版本

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 打印文件版本相关的知识,希望对你有一定的参考价值。

#include <windows.h>
#include <stdio.h>

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

void PrintFileVersion(LPCTSTR szVersionFile)
{
	DWORD  verHandle;
	UINT   size = 0;
	LPBYTE lpBuffer = NULL;
	DWORD  verSize = GetFileVersionInfoSize(szVersionFile, &verHandle);

	if (verSize != 0)
	{
		LPSTR verData = malloc(verSize);

		if (GetFileVersionInfo(szVersionFile, verHandle, verSize, verData))
		{
			if (VerQueryValue(verData, "\\", (VOID FAR* FAR*)&lpBuffer, &size))
			{
				if (size)
				{
					VS_FIXEDFILEINFO *verInfo = (VS_FIXEDFILEINFO *)lpBuffer;
					if (verInfo->dwSignature == 0xfeef04bd)
					{

						// Doesn't matter if you are on 32 bit or 64 bit,
						// DWORD is always 32 bits, so first two revision numbers
						// come from dwFileVersionMS, last two come from dwFileVersionLS
						char result[sizeof(DWORD) * 4 + 4] = "";
						sprintf_s(result, sizeof(result), "%d.%d.%d.%d",
							(verInfo->dwFileVersionMS >> 16) & 0xffff,
							(verInfo->dwFileVersionMS >> 0) & 0xffff,
							(verInfo->dwFileVersionLS >> 16) & 0xffff,
							(verInfo->dwFileVersionLS >> 0) & 0xffff
							);
						printf(result);
					}
				}
			}
		}
		free(verData);
	}
}

int main()
{
	TCHAR* szVersionFile = "C:/WINDOWS/system32/notepad.exe";
	PrintFileVersion(szVersionFile);
	system("PAUSE");
}

以上是关于c_cpp 打印文件版本的主要内容,如果未能解决你的问题,请参考以下文章

c_cpp 打印0到10,然后打印10到0

c_cpp 将数据保存到文件的datapipe.c版本

c_cpp Ç代码断言打印

c_cpp 打印矢量

c_cpp 打印中国地图

c_cpp 格式化日期打印