获取文件版本(IE)
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)的更多相关文章
- Powershell 获取文件版本信息
获取文件版本信息,通过FileVersionInfo::GetVersioninfo(file) 来获取信息 function Check-DdpstoreFileVersion{ $Ddpstore ...
- C#获取文件版本、文件大小等信息
使用以下C#程序代码可以非常方便地获取Windows系统中任意一个文件(尤其是可执行文件)的文件版本.文件大小.版权.产品名称等信息.所获取到的信息类似于在Windows操作系统中右键点击该文件,然后 ...
- C#获取文件版本信息
使用FileVersionInfo获取版本信息 FileVersionInfo info = FileVersionInfo.GetVersionInfo(Application.Current.St ...
- SharePoint online 获取文件版本记录
endpoint: _api/web/GetFileByServerRelativeUrl('/allDoc/xxx.pdf')/Versions 问题: 第一次使用,无论在本地还是o365上,都只返 ...
- C# 获取文件版本
var versionInfo = FileVersionInfo.GetVersionInfo(filePath); String productVersion = versionInfo.Prod ...
- WIN32 API 获取文件版本信息
CString strVersion; CString strPath(_T("xxxxxxxx.exe")); // 读文件信息 DWORD dwVerHnd = 0; DWOR ...
- win32api 获取文件版本信息
#coding:utf-8 myPath="C:\\ime" import os from win32api import GetFileVersionInfo, LOWORD, ...
- VB 获取文件版本
Function GetVer(FilePathName As String) As String If FilePathName = Nothing Or FilePathName = " ...
- SVN使用_获取某版本后改动的文件列表
本章将讲解如何通过svn命令获取某版本后改动的所有文件 一键操作,告别svn log的繁杂对比工作. 1:安装SVN命令行工具Subversion(不是TortoiseSVN) 下载Subversio ...
随机推荐
- 读取注册表获取Windows系统XP/7/8/10类型(使用wcscmp比较wchar[]内容)
很多方案是采用GetVersion.GetVersionEx这两个API来查询操作系统的版本号来判断当前的操作系统是Windows系列中的哪个,在Win10没有出现前,这种方法是行的通的,但是Win1 ...
- nodejs redis遇到的一个问题解决
v ar redis = require("redis"), client = redis.createClient({host:'tc-arch-osp33.tc', port: ...
- 重写QLineEdit,实现编辑框内添加删除按钮的功能(随时把控件Move到一个地方,然后show就可以了,这是万能的办法)
http://www.qtcn.org/bbs/read-htm-tid-62265-ds-1-page-1.html#180286
- 深入探索ScrollWindow
最近做WIN32 API开发时发现对ScrollWindow的一些工作原理并不是太清楚,于是做了相关研究,记载下来和大家共同学习. 首先在WM_CREATE中获取系统字符的宽度和高度 case WM_ ...
- Flask学习之旅--数据库
一.写在前面 在Web开发中,数据库操作是很重要的一部分,因为网站的很多重要信息都保存在数据库之中.而Flask在默认情况下是没有数据库.表单验证等功能的,但是可以用Flask-extension为W ...
- 简单看看jdk7源码之java.lang包01
从今天开始简单开始读一遍jdk的源码,估计这个时间会很长,慢慢啃吧....(首先说一句抱歉,因为很多图都是直接百度扣的,图太多了不能为每一个图附上原版链接,不好意思!) 在网上看了很多的教程,读源码有 ...
- 13 CSS样式权重问题
<!-- 权重问题整体说明: 1.权重的意义:判定CSS属性的优先级高低,也就是说判定那个CSS的属性优先显示,将其他的低优先级的CSS样式覆盖掉. 2.如何判断权重:数选择器的数量,按照Id选 ...
- kubernetes实战篇之通过api-server访问dashboard
系列目录 前面一节我们介绍了如何使用kube-proxy搭建代理访问dashboard,这样做缺点非常明显,第一可以通过http访问,第二是这种方式要启动一个后台进程,如果进程关闭了则不能够访问了,还 ...
- 【设计模式】【最后一个】结构型07适配器模式(Adapter Pattern)
适配器模式(Adapter Pattern) 推荐一个很全面的博客:https://blog.csdn.net/zxt0601/article/details/52848004 定义:将一个类的接口转 ...
- MyBatis从入门到精通(六):MyBatis动态Sql之if标签的用法
最近在读刘增辉老师所著的<MyBatis从入门到精通>一书,很有收获,于是将自己学习的过程以博客形式输出,如有错误,欢迎指正,如帮助到你,不胜荣幸! 本篇博客主要讲解如何使用if标签生成动 ...