93 lines
2.2 KiB
C++
93 lines
2.2 KiB
C++
|
//+----------------------------------------------------------------------------
|
||
|
//
|
||
|
// File: cmver.cpp
|
||
|
//
|
||
|
// Module: CMSETUP.LIB
|
||
|
//
|
||
|
// Synopsis: Implementation of CmVersion class, a utility class that
|
||
|
// helps in detecting the version of Connection Mananger that
|
||
|
// is installed.
|
||
|
//
|
||
|
// Copyright (c) 1998-1999 Microsoft Corporation
|
||
|
//
|
||
|
// Author: a-anasj Created 02/11/98
|
||
|
// quintinb Cleaned Up and removed CRegValue 07/14/98
|
||
|
// quintinb Rewrote 09/14/98
|
||
|
//
|
||
|
//+----------------------------------------------------------------------------
|
||
|
|
||
|
#include "cmsetup.h"
|
||
|
#include "reg_str.h"
|
||
|
|
||
|
CmVersion::CmVersion()
|
||
|
{
|
||
|
HKEY hKey;
|
||
|
LONG lResult;
|
||
|
|
||
|
m_szCmmgrPath[0] = TEXT('\0');
|
||
|
|
||
|
//
|
||
|
// We always want to look in the system directory for cmmgr32.exe first. This is
|
||
|
// its new install location and the app paths key may be corrupted by a 1.0 profile
|
||
|
// install.
|
||
|
//
|
||
|
|
||
|
MYVERIFY(0 != GetSystemDirectory(m_szCmmgrPath, CELEMS(m_szCmmgrPath)));
|
||
|
MYVERIFY(CELEMS(m_szPath) > (UINT)wsprintf(m_szPath, TEXT("%s\\cmdial32.dll"),
|
||
|
m_szCmmgrPath));
|
||
|
|
||
|
if (!FileExists(m_szPath))
|
||
|
{
|
||
|
//
|
||
|
// The file wasn't in the system directory, now try the app paths key
|
||
|
//
|
||
|
m_szCmmgrPath[0] = TEXT('\0');
|
||
|
m_szPath[0] = TEXT('\0');
|
||
|
|
||
|
lResult = RegOpenKeyEx(HKEY_LOCAL_MACHINE, c_pszRegCmAppPaths, 0, KEY_READ, &hKey);
|
||
|
|
||
|
if (ERROR_SUCCESS == lResult)
|
||
|
{
|
||
|
//
|
||
|
// Check to see if we have a path to work from.
|
||
|
//
|
||
|
|
||
|
DWORD dwSize = MAX_PATH;
|
||
|
DWORD dwType = REG_SZ;
|
||
|
|
||
|
if (ERROR_SUCCESS == RegQueryValueEx(hKey, c_pszRegPath, NULL, &dwType,
|
||
|
(LPBYTE)m_szCmmgrPath, &dwSize))
|
||
|
{
|
||
|
//
|
||
|
// Now construct the base object
|
||
|
//
|
||
|
MYVERIFY(CELEMS(m_szPath) > (UINT)wsprintf(m_szPath, TEXT("%s\\cmdial32.dll"),
|
||
|
m_szCmmgrPath));
|
||
|
|
||
|
Init();
|
||
|
}
|
||
|
RegCloseKey(hKey);
|
||
|
}
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
Init();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
CmVersion::~CmVersion()
|
||
|
{
|
||
|
// nothing to do really
|
||
|
}
|
||
|
|
||
|
BOOL CmVersion::GetInstallLocation(LPTSTR szStr)
|
||
|
{
|
||
|
if ((m_bIsPresent) && (TEXT('\0') != m_szCmmgrPath[0]) && (NULL != szStr))
|
||
|
{
|
||
|
lstrcpy(szStr, m_szCmmgrPath);
|
||
|
}
|
||
|
|
||
|
return m_bIsPresent;
|
||
|
}
|
||
|
|