获取文件详细信息

DWORD dwSize = GetFileVersionInfoSize(strPath, NULL);

		UINT nSize = dwSize * sizeof(TCHAR);
		LPVOID pBlock = new TCHAR[nSize];
		memset(pBlock, 0, nSize);
		GetFileVersionInfo(strPath, 0, dwSize, pBlock);

		char* pVerValue = NULL;
		nSize = 0;
		VerQueryValue(pBlock, _T("\\VarFileInfo\\Translation"),
			(LPVOID*)&pVerValue, &nSize);

		CString strSubBlock, strTranslation, strTemp;
		strTemp.Format(_T("000%x"), *((unsigned short int *)pVerValue));

		strTranslation = strTemp.Right(4);
		strTemp.Format(_T("000%x"), *((unsigned short int *)&pVerValue[2]));
		strTranslation += strTemp.Right(4);
		
		//080404b0为中文,040904E4为英文

		//文件描述 
		strSubBlock.Format(_T("\\StringFileInfo\\%s\\FileDescription"), strTranslation);
		VerQueryValue(pBlock, strSubBlock.GetBufferSetLength(256), (LPVOID*)&pVerValue, &nSize);
		strSubBlock.ReleaseBuffer();
		strTemp.Format(_T("文件描述: %s"), pVerValue);

		//内部名称 
		strSubBlock.Format(_T("\\StringFileInfo\\%s\\InternalName"), strTranslation);
		VerQueryValue(pBlock, strSubBlock.GetBufferSetLength(256), (LPVOID*)&pVerValue, &nSize);
		strSubBlock.ReleaseBuffer();
		strTemp.Format(_T("文件描述: %s"), pVerValue);

		//合法版权 
		strSubBlock.Format(_T("\\StringFileInfo\\%s\\LegalTradeMarks"), strTranslation);
		VerQueryValue(pBlock, strSubBlock.GetBufferSetLength(256), (LPVOID*)&pVerValue, &nSize);
		strSubBlock.ReleaseBuffer();
		strTemp.Format(_T("合法版权: %s"), pVerValue);

		//原始文件名 
		strSubBlock.Format(_T("\\StringFileInfo\\%s\\OriginalFileName"), strTranslation);
		VerQueryValue(pBlock, strSubBlock.GetBufferSetLength(256), (LPVOID*)&pVerValue, &nSize);
		strSubBlock.ReleaseBuffer();
		strTemp.Format(_T("原始文件名: %s"), pVerValue);

		//产品名称 
		strSubBlock.Format(_T("\\StringFileInfo\\%s\\ProductName"), strTranslation);
		VerQueryValue(pBlock, strSubBlock.GetBufferSetLength(256), (LPVOID*)&pVerValue, &nSize);
		strSubBlock.ReleaseBuffer();
		strTemp.Format(_T("产品名称: %s"), pVerValue);

		//产品版本 
		strSubBlock.Format(_T("\\StringFileInfo\\%s\\ProductVersion"), strTranslation);
		VerQueryValue(pBlock, strSubBlock.GetBufferSetLength(256), (LPVOID*)&pVerValue, &nSize);
		strSubBlock.ReleaseBuffer();
		strTemp.Format(_T("产品版本: %s"), pVerValue);


加上依赖,否则会报链接错误(GetFileVersionInfoSize)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值