天天看点

判断vc2005运行库是否以已安装

网上找不到相关的代码,只有自己写了。

//===============================================================
//功能:
//	判断vc2005运行库是否以已安装
//参数:
//	无
//返回值:
//	如果安装,返回TRUE,否则,返回FALSE
//备注: 
// #include <atlbase.h>
//===============================================================
BOOL VC2005RuntimeIsInstalled()
{
	CRegKey reg;
	HKEY hKey = NULL;
	TCHAR buf[1024] = {0};
	LONG lngRet =0;
	DWORD dwCharCount;
	BOOL bRet = FALSE;
	
	//微软官方下载的安装包安装后是这个键
	lngRet = reg.Open(HKEY_LOCAL_MACHINE,
		_T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{A49F249F-0C91-497F-86DF-B2585E8E76B7}"),
		KEY_ALL_ACCESS);

	if (ERROR_SUCCESS == lngRet)
	{
		dwCharCount = sizeof(buf)/sizeof(TCHAR);
		lngRet = reg.QueryValue(buf,_T("DisplayName"),&dwCharCount);
		
		if (ERROR_SUCCESS == lngRet)
		{
			bRet = TRUE;
		}
	}
	else
	{
		//vs安装时,自动安装的是这个键
		lngRet = reg.Open(HKEY_LOCAL_MACHINE,_T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{710f4c1c-cc18-4c49-8cbf-51240c89a1a2}"),KEY_ALL_ACCESS);
	
		if (ERROR_SUCCESS == lngRet)
		{
			//AfxMessageBox(_T("2\r\n"));
			dwCharCount = sizeof(buf)/sizeof(TCHAR);
			lngRet = reg.QueryValue(buf,_T("DisplayName"),&dwCharCount);
			
			if (ERROR_SUCCESS == lngRet)
			{
				bRet = TRUE;
			}
		}
	}
	
	return bRet;
}