to  leecyi(leecyi):
   DllRegisterServer是组件内部的函数,我是要在外面注册这个组件

解决方案 »

  1.   

    看看我的這斷程序,把組件加到COM+服務中去.
    我不知道符不符合你的要求.記得把comadmin.dll導入你的程序中#include "comadmin.h"
    #include <comdef.h>BOOL CAdComDllApp::CreteCollection(CString strCollName)
    {
        HRESULT hr;
        hr = CoInitialize(NULL);
    if ( FAILED( hr ) )
    {
    AfxMessageBox("install com failed!");
    return hr;
    }    objCom.CreateDispatch(TEXT("COMAdmin.COMAdminCatalog"));   ICatalogCollection objCat=objCom.GetCollection(TEXT("Applications"));   objCat.Populate();   ICatalogObject objObj=objCat.Add();   _variant_t vntName(strCollName);   VARIANT vntAppkey=objObj.GetKey();
        
       objObj.SetValue(TEXT("Name"),vntName);   objCat.SaveChanges();   ::CoUninitialize();
       return TRUE;}BOOL CAdComDllApp::InserDll(CString strCollName, CString strDllPath)
    {
        HRESULT hr;
        hr = CoInitialize(NULL);
    if ( FAILED( hr ) )
    {
    AfxMessageBox("install com failed!");
    return hr;
    }
    objCom.InstallComponent(strCollName,strDllPath,NULL,NULL); ::CoUninitialize();
    return TRUE;
    }
      

  2.   

    我刚找到这个命令,好像是msiexec,具体用法尚未清楚
      

  3.   

    你是要往com+服务中加组件吗?如果这样可以通过comadmin.dll来实现!
      

  4.   

    win2000下,COM+管理器已代替了MTS了。
    你可以用ADSI来写。
      

  5.   

    to richard2001(Richard):
        我只是要用程序(比如setup.exe)当运行了这个程序后就把另一个程序(aaa.dll)注册到COM+管理器中。
        用ADSI如何实现,能详细说一下吗,谢谢。
      

  6.   

    打开mfc classwizard,点击 Add class,选择From a type library选择c:\winnt\system32\com\comadmin.dll
    下面的代码可以实现你要的功能
    #include "comadmin.h"
    #include <comdef.h>ICOMAdminCatalog objCom;
        HRESULT hr;
        hr = CoInitialize(NULL);
    if ( FAILED( hr ) )
    {
    AfxMessageBox("install com failed!");
    return hr;
    }    objCom.CreateDispatch(TEXT("COMAdmin.COMAdminCatalog"));   ICatalogCollection objCat=objCom.GetCollection(TEXT("Applications"));   objCat.Populate();   ICatalogObject objObj=objCat.Add();   _variant_t vntName("NewCollecton");   VARIANT vntAppkey=objObj.GetKey();
        
       objObj.SetValue(TEXT("Name"),vntName);   objCat.SaveChanges();
       objCom.InstallComponent("NewCollection",strDllPath,NULL,NULL);//srrDllPath是你要注册的dll的完整路径
         return TRUE;}
      

  7.   

    先谢谢 junguo(junguo):。 我去试试