IE版本信息的获取:从mshtml.dll获取到的和IE的“关于“获取的版本不一致
来源:互联网 发布:淘宝客自动发送微信群 编辑:程序博客网 时间:2024/06/08 08:12
项目中获取的IE的版本号信息,我使用了如下的方法:
//获取ie版本号#include "Winver.h"#pragma comment(lib,"Version.lib")CString GetIeVersionFromFile(){const 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);}}else{return _T("");}TCHAR buf[512] = { 0 };wsprintf(buf, _T("%d.%d.%d.%d"), dwMajorVersion, dwMinorVersion, dwBuildNumber, dwRevisionNumber);OutputDebugString(buf);CString strIEVer = buf;return strIEVer;}
这个dll的百度知道的解释中https://baike.baidu.com/item/mshtml.dll/10967788?fr=aladdin有一点内容说:
“说明:一般只要缺少这个核心部件的话.IE会出现无法使用的情况.是有关 IE html 网页解释的应用扩展数据链接库
mshtml.dll (6.0.2800.1400),它的版本和自己的IE版本是匹配的,“
也许这个是在较早的系统上会保持一致的。但是现在我发现有些系统上这个是不一致的。
大部分的机子上都是一致的,但是有个别的xp系统和win10系统中的ie是不一致的。经过调查,发生这个不一致的xp系统的ie本身损坏,就进行了升级;而windows10的不一致是表现为ie显示的版本的号的10.0.9200.17457,而用这个方法获取到的是10.17457.0.9200(这里用我用的机子的ie的版本号举例)的样子;后来就在注册表内找到ie的版本信息,调查了十多台xp、win7,win10,后发现都是一致,于是就采用注册表获取的方法:
BOOL GetRegQueryValue(HKEY hKey, LPCTSTR lpSubKey,LPCTSTR lpValueName, LPTSTR szQueryValue){HKEY hResult;LONG nResult;BOOL b64OS = OSVersion::Is64BitOs();if( b64OS == TRUE ){nResult = RegOpenKeyEx(hKey, lpSubKey, 0, KEY_READ|KEY_WOW64_64KEY, &hResult);}else{nResult = RegOpenKeyEx(hKey, lpSubKey, 0, KEY_READ|KEY_WOW64_32KEY, &hResult);}if(ERROR_SUCCESS != nResult){return FALSE;}DWORD lValueSize = 256, dwType = REG_SZ;nResult = RegQueryValueEx(hResult, lpValueName, NULL, &dwType, (LPBYTE)szQueryValue, &lValueSize);if(ERROR_SUCCESS != nResult){RegCloseKey(hResult);return FALSE;}RegCloseKey(hResult);return TRUE;}CString GetIeVersionFromReg(){CString strIeVersion;CString strRegPath = _T("SOFTWARE\\Microsoft\\Internet Explorer");TCHAR szVersion[256] = {0};if( GetRegQueryValue(HKEY_LOCAL_MACHINE, strRegPath, _T("svcVersion"), (LPTSTR)szVersion )){strIeVersion = szVersion;}else if( GetRegQueryValue(HKEY_LOCAL_MACHINE, strRegPath, _T("Version"), (LPTSTR)szVersion )){strIeVersion = szVersion;}else{strIeVersion = GetIeVersionFromFile();}return strIeVersion;}
阅读全文
0 0
- IE版本信息的获取:从mshtml.dll获取到的和IE的“关于“获取的版本不一致
- IE版本信息的获取:从mshtml.dll获取到的和IE的“关于“获取的版本不一致
- 获取EXE或者DLL的版本信息
- ASP中怎样用Request.ServerVariables获取访客的系统版本和IE版本
- VC 通过mshtml.dll获取ie版本号
- 在masm32中获取IE版本的方法2
- 获取文件的版本信息
- 获取IE版本
- VC获取IE版本
- 获取IE版本
- C++ 获取 IE 版本
- delphi 获取Exe或DLL的文件版本信息
- 从AppStore获取一个iOS App的版本信息
- 从AppStore获取一个iOS App的版本信息
- 转:从AppStore获取一个iOS App的版本信息
- 获取SVN版本信息更新exe,dll文件的版本信息(C++, C#)
- 获取应用的版本名和版本
- 获取和修改IE的首页地址
- Android 进程间交互 (IPC) 开发实践
- Shell中的for和while循环详细总结
- java构造sql查询语句时date和datetime的用法
- 【模板】 字符串哈希
- JS中常见的一些排序算法
- IE版本信息的获取:从mshtml.dll获取到的和IE的“关于“获取的版本不一致
- Centos中的数据库MariaDB常用命令
- 线程3:线程同步
- Tomcat发布为Windows服务
- EasyUI中datagrid获取选择行的相关总结
- document.body.appendChild(div);的用法
- Unity3d调用Android版so库
- bzoj4562: [Haoi2016]食物链
- 微信公众平台开发实战Java版之微信获取用户基本信息