GetFileInfo
CUIAction::GetFileVersion2
GetSystemDirectory     WCHAR szConfigFile[MAX_PATH + 1];
   
::GetSystemDirectory(szConfigFile, MAX_PATH);
  
  ::PathAppend(szConfigFile, FileBootCleanConfigFileName); void GetApplicationVersion(char * strVersion)
{
TCHAR szFullPath[MAX_PATH];
DWORD dwVerInfoSize = 0;
DWORD dwVerHnd;
VS_FIXEDFILEINFO * pFileInfo; GetModuleFileName(NULL, szFullPath, sizeof(szFullPath));
dwVerInfoSize = GetFileVersionInfoSize(szFullPath, &dwVerHnd);
if (dwVerInfoSize)
{
// If we were able to get the information, process it:
HANDLE hMem;
LPVOID lpvMem;
unsigned int uInfoSize = 0; hMem = GlobalAlloc(GMEM_MOVEABLE, dwVerInfoSize);
lpvMem = GlobalLock(hMem);
GetFileVersionInfo(szFullPath, dwVerHnd, dwVerInfoSize, lpvMem); ::VerQueryValue(lpvMem, (LPTSTR)("\\"), (void**)&pFileInfo, &uInfoSize); WORD m_nProdVersion[4]; // Product version from the FILEVERSION of the version info resource
m_nProdVersion[0] = HIWORD(pFileInfo->dwProductVersionMS);
m_nProdVersion[1] = LOWORD(pFileInfo->dwProductVersionMS);
m_nProdVersion[2] = HIWORD(pFileInfo->dwProductVersionLS);
m_nProdVersion[3] = LOWORD(pFileInfo->dwProductVersionLS); sprintf(strVersion, "%d.%d.%d.%d",
m_nProdVersion[0], m_nProdVersion[1],m_nProdVersion[2],m_nProdVersion[3]); GlobalUnlock(hMem);
GlobalFree(hMem);
}
else
{
strcpy(strVersion, "1.0");
}
}
BOOL CModuleVersion::GetDLLVersionInfo(LPCTSTR filename)
{
m_translation.charset = 1252; // default = ANSI code page
memset((VS_FIXEDFILEINFO*)this, 0, sizeof(VS_FIXEDFILEINFO)); // get module handle
//HMODULE hModule = LoadLibrary(filename);
//if (hModule==NULL)
// return FALSE; // some times, LoadLibrary may fail , --- by bbcallen
HMODULE hModule = LoadLibraryEx(filename, NULL, LOAD_LIBRARY_AS_DATAFILE);
if (hModule==NULL)
return FALSE; // read file version info
DWORD dwDummyHandle; // will always be set to zero
DWORD len = GetFileVersionInfoSize(filename, &dwDummyHandle);
if (len <= 0)
{
FreeLibrary(hModule);
return FALSE;
} BYTE* pbData = new BYTE[len]; // allocate version info
if (!pbData)
{
FreeLibrary(hModule);
return FALSE;
} m_atpVersionInfo.Attach(pbData);
if (!::GetFileVersionInfo(filename, 0, len, m_atpVersionInfo))
{
FreeLibrary(hModule);
return FALSE;
} LPVOID lpvi;
UINT iLen;
if (!VerQueryValue(m_atpVersionInfo, _T("\\"), &lpvi, &iLen))
{
FreeLibrary(hModule);
return FALSE;
} // copy fixed info to myself, which am derived from VS_FIXEDFILEINFO
*(VS_FIXEDFILEINFO*)this = *(VS_FIXEDFILEINFO*)lpvi; // Get translation info
if (VerQueryValue(m_atpVersionInfo,
_T("\\VarFileInfo\\Translation"), &lpvi, &iLen) && iLen >= 4) {
m_translation = *(TRANSLATION*)lpvi;
}
FreeLibrary(hModule);
return dwSignature == VS_FFI_SIGNATURE;
}
CString CGlobalFun::getIEVersion()
{
TCHAR szFilename[] = _T("mshtml.dll"); DWORD dwMajorVersion =0, dwMinorVersion = 0; DWORD dwBuildNumber =0, dwRevisionNumber = 0; DWORD dwHandle = 0; DWORD dwVerInfoSize = GetFileVersionInfoSize(szFilename, &dwHandle); if (dwVerInfoSize) {
LPVOID lpBuffer = LocalAlloc(LPTR, dwVerInfoSize);
if (lpBuffer)
{
if (GetFileVersionInfo(szFilename, dwHandle, dwVerInfoSize, lpBuffer))
{
VS_FIXEDFILEINFO * lpFixedFileInfo = NULL;
UINT nFixedFileInfoSize = 0;
if (VerQueryValue(lpBuffer, TEXT("\\"), (LPVOID*)&lpFixedFileInfo, &nFixedFileInfoSize) &&(nFixedFileInfoSize))
{
dwMajorVersion = HIWORD(lpFixedFileInfo->dwFileVersionMS);
dwMinorVersion = LOWORD(lpFixedFileInfo->dwFileVersionMS);
dwBuildNumber = HIWORD(lpFixedFileInfo->dwFileVersionLS);
dwRevisionNumber = LOWORD(lpFixedFileInfo->dwFileVersionLS);
}
}
LocalFree(lpBuffer);
} }
CString strVersion;
strVersion.Format(_T("MSIE %d.%d"),dwMajorVersion,dwMinorVersion);
/*printf("mshtml.dll VersionInfo: \n\tMajorVersion=%d\n\tMinorVersion=%d\n\tBuildNumber=%d\n\tRevisionNumber=%d\n", dwMajorVersion, dwMinorVersion, dwBuildNumber, dwRevisionNumber); */ return strVersion;
}
HRESULT CBootCheckTool::CopyDriverIfNew(LPCWSTR lpszNewDriver)
{
WCHAR szOldDriver[MAX_PATH + 1];
UINT uRet = ::GetSystemDirectory(szOldDriver, MAX_PATH);
if (!uRet)
return GetLastError() ? AtlHresultFromLastError() : E_FAIL; ::PathAppend(szOldDriver, L"Drivers");
::PathAppend(szOldDriver, BC_DriverFileName); ULARGE_INTEGER uiOldVersion = GetDllVersion(szOldDriver);
ULARGE_INTEGER uiNewVersion = GetDllVersion(lpszNewDriver); if (uiNewVersion.QuadPart <= uiOldVersion.QuadPart)
return S_FALSE; // 不需要拷贝 // 拷贝较新的版本
BOOL br = ::CopyFile(lpszNewDriver, szOldDriver, FALSE);
if (!br)
return GetLastError() ? AtlHresultFromLastError() : E_FAIL; return S_OK;
} ULARGE_INTEGER CBootCheckTool::GetDllVersion(LPCWSTR lpszFilePath)
{
BOOL bRet = FALSE;
DWORD dwHandle = 0;
DWORD dwFileInfoSize = 0;
VS_FIXEDFILEINFO *pFixFileInfo = NULL;
TCHAR *pszFileInfo = NULL;
UINT uLen = 0;
ULARGE_INTEGER uiVersion;
uiVersion.HighPart = 0;
uiVersion.LowPart = 0; dwFileInfoSize = ::GetFileVersionInfoSize(lpszFilePath, &dwHandle);
if (dwFileInfoSize == 0)
goto Exit0; pszFileInfo = new TCHAR[dwFileInfoSize];
if (pszFileInfo == NULL)
goto Exit0; bRet = ::GetFileVersionInfo(lpszFilePath, dwHandle, dwFileInfoSize, pszFileInfo);
if (!bRet)
goto Exit0; bRet = ::VerQueryValue(pszFileInfo, _T("\\"), (LPVOID *)&pFixFileInfo, &uLen);
if (!bRet)
goto Exit0; if (uLen > 0)
{
uiVersion.HighPart = pFixFileInfo->dwFileVersionMS;
uiVersion.LowPart = pFixFileInfo->dwFileVersionLS;
} Exit0:
if (pszFileInfo)
{
delete pszFileInfo;
pszFileInfo = NULL;
} return uiVersion;
}

获取文件版本(IE)的更多相关文章

  1. Powershell 获取文件版本信息

    获取文件版本信息,通过FileVersionInfo::GetVersioninfo(file) 来获取信息 function Check-DdpstoreFileVersion{ $Ddpstore ...

  2. C#获取文件版本、文件大小等信息

    使用以下C#程序代码可以非常方便地获取Windows系统中任意一个文件(尤其是可执行文件)的文件版本.文件大小.版权.产品名称等信息.所获取到的信息类似于在Windows操作系统中右键点击该文件,然后 ...

  3. C#获取文件版本信息

    使用FileVersionInfo获取版本信息 FileVersionInfo info = FileVersionInfo.GetVersionInfo(Application.Current.St ...

  4. SharePoint online 获取文件版本记录

    endpoint: _api/web/GetFileByServerRelativeUrl('/allDoc/xxx.pdf')/Versions 问题: 第一次使用,无论在本地还是o365上,都只返 ...

  5. C# 获取文件版本

    var versionInfo = FileVersionInfo.GetVersionInfo(filePath); String productVersion = versionInfo.Prod ...

  6. WIN32 API 获取文件版本信息

    CString strVersion; CString strPath(_T("xxxxxxxx.exe")); // 读文件信息 DWORD dwVerHnd = 0; DWOR ...

  7. win32api 获取文件版本信息

    #coding:utf-8 myPath="C:\\ime" import os from win32api import GetFileVersionInfo, LOWORD, ...

  8. VB 获取文件版本

    Function GetVer(FilePathName As String) As String If FilePathName = Nothing Or FilePathName = " ...

  9. SVN使用_获取某版本后改动的文件列表

    本章将讲解如何通过svn命令获取某版本后改动的所有文件 一键操作,告别svn log的繁杂对比工作. 1:安装SVN命令行工具Subversion(不是TortoiseSVN) 下载Subversio ...

随机推荐

  1. Android零基础入门第25节:最简单最常用的LinearLayout线性布局

    原文:Android零基础入门第25节:最简单最常用的LinearLayout线性布局 良好的布局设计对于UI界面至关重要,在前面也简单介绍过,目前Android中的布局主要有6种,创建的布局文件默认 ...

  2. CNN(卷积神经网络)、RNN(循环神经网络)和DNN(深度神经网络)

    本文转载修改自:知乎-科言君 感知机(perceptron) 神经网络技术起源于上世纪五.六十年代,当时叫感知机(perceptron),拥有输入层.输出层和一个隐含层.输入的特征向量通过隐含层变换达 ...

  3. Office Add-in Model 简介

    原文地址:http://simpeng.net/office-add-in/office-add-in-model-%e7%ae%80%e4%bb%8b/ , 为了本博客内容的完整性,转载至此. Of ...

  4. Bamboo 0.2.11 发布,HAProxy 自动配置

    Bamboo 0.2.11 发布,此版本更新内容如下: 新特性 提供更多的模板字符串函数:strings.Split,  strings.Join,strings.Replace, strings.T ...

  5. 一份React-Native学习指南

    直击现场 学习React-Native过程中整理的一份学习指南,包含 教程.开源app和资源网站等,还在不断更新中.欢迎pull requests! React-Native学习指南 本指南汇集Rea ...

  6. Westciv Tools主要为CSS3提供了渐变gradients、盒子阴影box-shadow、变形transform和文字描边四种在线生成效果的工具

    Westciv Tools主要为CSS3提供了渐变gradients.盒子阴影box-shadow.变形transform和文字描边四种在线生成效果的工具 1.Westciv Tools 彩蛋爆料直击 ...

  7. 使用SpringMVC框架解决中文乱码的问题

    spring Web MVC框架提供了org.springframework.web.filter.CharacterEncodingFilter用于解决POST方式造成的中文乱码 问题. 需要在we ...

  8. 写一个可拖动的 TShape(简单有效:依靠VCL体系,TShape自己就能被探测到被点击了,然后只要改变Left坐标就行了)

    问题来源: http://www.cnblogs.com/del/archive/2009/03/09/1234066.html#1471535 本例效果图: 自定义类(TMyShape)单元 : u ...

  9. ChartDirector应用笔记(可同时为Web和Qt MFC提供图表)

    ChartDirector介绍 ChartDirector是一款小巧精细的商业图表库.其适用的语言范围非常广泛,包括.Net, Java, Asp, VB, PHP, Python, Ruby, C+ ...

  10. hadoop之hive&hbase互操作

    大家都知道,hive的SQL操作非常方便,但是查询过程中需要启动MapReduce,无法做到实时响应. hbase是hadoop家族中的分布式数据库,与传统关系数据库不同,它底层采用列存储格式,扩展性 ...