摘要:一般用Visual C++开发的Windows应用程序需要这个运行时库的支持才能在没有安装Visual C++的计算机上正常运行,也可以在开发软件时选择”在静态库中使用 MFC“,从而将调用的库函数的代码嵌入应用程序,避免对运行时库的依赖。此软件包安装 C Runtime(CRT)、Standard C++、ATL、MFC、OpenMP 和 MSDIA 库的运行时组件。对于支持并行部署模式的库(CRT、SCL、ATL、MFC 和 OpenMP),这些运行时组件安装在支持并行程序集的 Windows 操作系统版本的本机程序集缓存中,这一缓存也称为 WinSxS 文件夹。
形成本文前,研读了bravo的新浪博客中《VC++Redistributable的安装判断 》,以及HuaHuaXia的专栏中《通过注册表检测是否安装了VC++ 2008 SP1 redistributable》两篇文章,了解到VC++Redistributable是大部分Windows平台下开发的程序所需要依赖的库,而vcredist_x86.exe这个6M大小的应用程序就是这个库的安装程序。
不同版本的VC++Redistributable具有不同的GUID(全局唯一标识),这给检测带来了很大困难。但是一个很明确的问题是——不管是何种版本,都会在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\路径下生成一个注册键key。
根据这个特征,这里提出一种可行方式是:根据注册表,判断xx键是否存在来判断VC++Redistributable运行库是否被安装。
// RegEditDetect.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <string>
#include <Windows.h>
using std::string;
LPCTSTR reg[18] = { _T("{A49F249F-0C91-497F-86DF-B2585E8E76B7}"),//Microsoft Visual C++ 2005 Redistributable X86
_T("{7299052B-02A4-4627-81F2-1818DA5D550D}"),//Microsoft Visual C&#