用exe的com执行后可以自动注册,要是dll的呢?如果dll的com放在服务器上,通过在客户机器上调用,服务器上的com如何注册呢?

解决方案 »

  1.   

    BOOL CSecuryEntryDlg::RegDllControl(LPCTSTR pszDllName)
    {
    HINSTANCE hLib = LoadLibrary(pszDllName);
        if (hLib <(HINSTANCE)HINSTANCE_ERROR)
        {
    AfxMessageBox(_T("dll file can't be import!"),MB_OK,NULL);
    return 0;
    }
        //get DllRegisterServer address
        FARPROC lpDllEntryPoint; 
        lpDllEntryPoint = GetProcAddress(hLib,_T("DllRegisterServer"));
        //DllRegisterServer
        if(lpDllEntryPoint!=NULL)
        {
             if(FAILED((*lpDllEntryPoint)()))
             {
                  AfxMessageBox(_T("DllRegisterServer Failed!"),MB_OK,NULL);
                  FreeLibrary(hLib);
      return 0;
             }    }
        else
        AfxMessageBox(_T("DllRegisterServer Failed!"),MB_OK,NULL);
    return 1;
    }BOOL CSecuryEntryDlg::UnRegDllControl(LPCTSTR pszDllName)
    {
    HINSTANCE hLib = LoadLibrary(pszDllName);
        if (hLib <(HINSTANCE)HINSTANCE_ERROR)
        {
    AfxMessageBox(_T("dll file can't be import!"),MB_OK,NULL);
    return 0;
    }
        //get DllUnregisterServer address
        FARPROC lpDllEntryPoint; 
        lpDllEntryPoint = GetProcAddress(hLib,_T("DllUnregisterServer"));
        //DllUnregisterServer
        if(lpDllEntryPoint!=NULL)
        {
             if(FAILED((*lpDllEntryPoint)()))
             {
                  AfxMessageBox(_T("DllUnregisterServer Failed!"),MB_OK,NULL);
                  FreeLibrary(hLib);
      return 0;
             }    }
        else
        AfxMessageBox(_T("DllUnregisterServer Failed!"),MB_OK,NULL);
    return 1;
    }
      

  2.   

    注册完了,我怎么在dcomcnfg中看不到我注册的dcom组件?
      

  3.   

    如果需要在dcomcnfg里看到,你就直接到win2000 server的管理工具的compoent servers里去注冊你的控件。不过方法比较复杂。