파일의 버전 정보 가져오기

코드부터 할게요.
BOOL IsMicroSoft(TCHAR *pFile)
{
	BOOL bRet = FALSE;
	PBYTE pInfo = NULL;
	TCHAR *pCompany;
	DWORD dwSize;
	LANGANDCODEPAGE *plcp;
	UINT  nSize;
	TCHAR *pToGet = new TCHAR[MAX_PATH];

	ZeroMemory(pToGet, MAX_PATH * sizeof(TCHAR));
	dwSize = GetFileVersionInfoSize(pFile, 0);
	if (dwSize > 0)
	{
		pInfo = new BYTE[dwSize];
		if (GetFileVersionInfo(pFile, 0, dwSize, pInfo))
		{
			//plcp    pInfo    ,           
			if (VerQueryValue(pInfo, _T("\\VarFileInfo\\Translation"), (PVOID*)&plcp, &nSize))
			{
				wsprintf(pToGet, _T("\\StringFileInfo\\%04X%04X\\CompanyName"), plcp->wLanguage, plcp->wCodePage);
				if (VerQueryValue(pInfo, pToGet, (PVOID*)&pCompany, &nSize))
				{
					if (lstrcmp(_T("Microsoft Corporation"), pCompany) == 0) bRet = TRUE;
				}
			}
		}
		delete[] pInfo;
	}
	delete[] pToGet;
	return bRet;
}

나의 이 함수는 마이크로소프트의 버전인지 아닌지를 판단하는 것이다. 비교적 간단하고 위조하기 쉬우나, 또한 하나의 방법이기도 하다.

좋은 웹페이지 즐겨찾기