还是自己写程序算了
void CMyClass::CreateODBC()
{
HKEY m_key;
char rtn[256];
CString tmp="";
DWORD len;
LONG rc=::RegOpenKeyEx(HKEY_LOCAL_MACHINE,"SOFTWARE\\GUANGHUA\\BLUEFIRE",0,KEY_ALL_ACCESS,&m_key); 
if(rc!=ERROR_SUCCESS)
{ ::RegCloseKey(m_key); 
 return;
}
::RegQueryValueEx(m_key,"odbc",NULL,NULL,(LPBYTE)rtn,(len=sizeof(rtn),&len)); //
    tmp.Format("%s",rtn);
tmp.TrimRight();
tmp.TrimLeft();
if(tmp!="1")//没有odbc
{
CFile dbfile(_T("temp.mdb"),CFile::modeRead);
CString path=dbfile.GetFilePath();
int pos=path.Find("\\temp.mdb"); 

path=path.Mid(0,pos); 
dbfile.Close(); 
char p[128];
sprintf(p,"DSN=temp1* DBQ=temp.mdb* DefaultDir=%s**",path);
int mlen = strlen(p);
for (int i=0; i<mlen; i++)
{
if (p[i] == '*')
p[i] = '\0';
}
SQLConfigDataSource(NULL,ODBC_ADD_DSN,"Microsoft Access Driver (*.mdb)",p);
char rtna[8];
strcpy(rtna,"1");
::RegSetValueEx(m_key,"odbc",NULL,REG_SZ,(unsigned char *)rtna,sizeof(rtna)); 
}
 //有了odbc
::RegCloseKey(m_key); }