Determine if DAO Jet engine version 3.5 is installed

Sometimes it is useful to know if the computer running your software has the DAO Jet Engine version 3.5 installed. You need this engine when you work with MFC DAO objects. I needed to know if DAO 3.5 was there while writing my own setup program for a piece of work which used the CDaoXYZ stuff, so I wrote a function that detects if the DAO Jet Engine is installed. The trick used is to check if the the registry key HKEY_LOCAL_MACHINE\Software\Microsoft\Jet\3.5\Engines exists. If yes, then there's at least one engine and the DAO Dll's are installed. You may use this code as implemented here (a function) or - if you don't like the global functions - make it a member function of your class needing the information. In the header file for the function (or class) definition you need these definitions:
bool	DAO35Installed() 
{ 
  HKEY hLM; 

  bool ret=false; 

  // let's open the Registry key for DAO 
  if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, 
    "Software\\Microsoft\\Jet\\3.5\\Engines", 
    0,KEY_QUERY_VALUE, &hLM) == ERROR_SUCCESS) 
  { 
    ret = true; 
    RegCloseKey(hLM); 
  } 

  return ret; 
} 

That's it. If you need to insure that DAO is installed just test
if (!DAO35Installed()) 
  // warning here 
else 
  // it's OK 



Comments

  • What should I install to get DAO Jet Engine working in my setup program?

    Posted by Legacy on 07/26/1999 12:00am

    Originally posted by: J.H. Lee

    What should I install to get DAO Jet Engine working in my setup program?
    Would you know what or which DLLs and registry info... is needed on that situation?
    --- in korea (sorry. I'm not native English speaker.)

    Reply
  • What should I install to get DAO Jet Engine working (without Access)?.

    Posted by Legacy on 03/13/1999 12:00am

    Originally posted by: David

    I'd like to know what should I install (which Dll, etc...) to
    get a DAO Jet engine working.

    thx in advance

    Reply
  • An even better way to determine the DAO version

    Posted by Legacy on 02/02/1999 12:00am

    Originally posted by: Chris Yourch

    Call this member function to determine the version of the Microsoft Jet database engine in use. The value returned represents the version number in the form "major.minor"; for example, "3.0". The product version number (for example, 3.0) consists of the version number (3), a period, and the release number (0).


    CString version = CDaoWorkspace::GetVersion();
    LPTSTR pszMajor = version.GetBuffer(0);
    LPTSTR pszMinor = strchr(pszMajor, '.');
    *pszMinor++ = '\0';
    int major = atoi(pszMajor);
    int minor = atoi(pszMinor);

    Reply
  • MFC will do it for you if you open a database

    Posted by Legacy on 10/28/1998 12:00am

    Originally posted by: Eric Cholet

    I detect if DAO isn't installed when trying to open a database
    
    (code below). This makes sure the DAO version expected by the
    linked-in MFC code is installed.

    TRY {
    m_db.m_pWorkspace = &m_workspace;
    m_db.Open (m_path_db, FALSE, FALSE, pwd);
    }
    CATCH (CDaoException, e)
    {
    CString s, t;
    if (e->m_pErrorInfo) {
    // some error with this database
    t.LoadString (IDS_ERR_DB_OPEN);
    s.Format (t, (const char *) e->m_pErrorInfo->m_strDescription);
    }
    else {
    // DAO isn't here
    t.LoadString (IDS_ERR_INIT_DAO);
    s.Format (t, e->m_scode);
    }
    AfxMessageBox (s, MB_ICONSTOP | MB_OK);
    return FALSE;
    }
    END_CATCH
    return TRUE;
    }

    Reply
  • Is testing just for 3.5 good enough?

    Posted by Legacy on 10/13/1998 12:00am

    Originally posted by: John L. Stanley

    Thanks for the useful function.

    Just one question:
    What happens when Microsoft releases the "next" version of Jet? Are they going to put entries in the registry to make it look like a version of 3.5 is loaded -or- are the CDaoXXXX objects suppost to auto-sense the version 4.0 (or whatever) registry hooks and use those?

    I guess what I'm asking is, if I use your function to auto-sense Jet 3.5, will my program fail when a user installs a higher version of Jet?

    Thanks,
    ... JLS

    Reply
Leave a Comment
  • Your email address will not be published. All fields are required.

Top White Papers and Webcasts

  • Best-in-Class organizations execute on a strategy that supports the multi-channel nature of customer requests. These leading organizations do not just open up their service infrastructures to accommodate new channels, but also empower their teams to deliver an effective and consistent experience regardless of the channel selected by the customer. This document will highlight the key business capabilities that support a Best-in-Class customer engagement strategy.

  • As mobile devices have pushed their way into the enterprise, they have brought cloud apps along with them. This app explosion means account passwords are multiplying, which exposes corporate data and leads to help desk calls from frustrated users. This paper will discover how IT can improve user productivity, gain visibility and control over SaaS and mobile apps, and stop password sprawl. Download this white paper to learn: How you can leverage your existing AD to manage app access. Key capabilities to …

Most Popular Programming Stories

More for Developers

Latest Developer Headlines

RSS Feeds