拷贝文件版本信息

·

#include <Windows.h>

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

BOOLEAN CopyVersionInfo(LPCSTR SrcFile, LPCSTR DstFile)
{
	BOOLEAN	Rv = FALSE;
	PVOID	VersionInfo;
	DWORD	VersionInfoSize;
	HANDLE	hUpdate = NULL;
	
	VersionInfoSize = GetFileVersionInfoSizeA(SrcFile, NULL);
	if (VersionInfoSize == 0)
		return FALSE;
	VersionInfo = LocalAlloc(LPTR, VersionInfoSize);
	if (VersionInfo == NULL)
		return FALSE;
	do
	{
		if (GetFileVersionInfoA(SrcFile, 0, VersionInfoSize, VersionInfo) == FALSE)
			break;
		hUpdate = BeginUpdateResourceA(DstFile, FALSE);
		if (hUpdate == NULL)
			break;
		if (UpdateResourceA(hUpdate, RT_VERSION, (LPCSTR)1, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US),
							VersionInfo, VersionInfoSize) == FALSE)
			break;
		if (EndUpdateResourceA(hUpdate, FALSE) == FALSE)
			break;
		hUpdate = NULL;
		Rv = TRUE;
	} while (0);
	if (hUpdate)
		EndUpdateResourceA(hUpdate, TRUE);
	LocalFree(VersionInfo);
	return Rv;
}


int main(int argc, char* argv[])
{
	CopyVersionInfo("c:\\windows\\system32\\ntdll.dll", "D:\\muma.dll");
	return 1;
}

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注