C# 如何获取所有com&x2B;com和x2B的组件;应用

C# 如何获取所有com&x2B;com和x2B的组件;应用,c#,asp.net,windows,.net-4.0,com+,C#,Asp.net,Windows,.net 4.0,Com+,我正在尝试使用c#和ASP.NET与COM+一起工作。我一直在关注一个问题,但有一部分失败了 dynamic oCatalog = Activator.CreateInstance(Type.GetTypeFromProgID("ComAdmin.COMAdminCatalog")); /* Get the Applications collection and populate it */ dynamic applicationInstances = oCatalog.GetCollectio

我正在尝试使用c#和ASP.NET与COM+一起工作。我一直在关注一个问题,但有一部分失败了

dynamic oCatalog = Activator.CreateInstance(Type.GetTypeFromProgID("ComAdmin.COMAdminCatalog"));
/* Get the Applications collection and populate it */
dynamic applicationInstances = oCatalog.GetCollection("Applications");
applicationInstances.Populate();
foreach (dynamic applicationInstance in applicationInstances)
    {
        Response.Write("<p>" + applicationInstance.Name.ToString() + "-" + applicationInstance.Key.ToString() + "</p>");
        dynamic objComponents = oCatalog.GetCollection("Components", applicationInstance.Key);
        objComponents.Populate();
        foreach(dynamic Components in objComponents)
        {
            Response.Write("<p>" + Components.Name.ToString() + "</p>");
        }           
    }
dynamic oCatalog=Activator.CreateInstance(Type.GetTypeFromProgID(“ComAdmin.COMAdminCatalog”);
/*获取应用程序集合并填充它*/
DynamicApplicationInstances=oCatalog.GetCollection(“应用程序”);
applicationInstances.Populate();
foreach(应用程序实例中的动态应用程序实例)
{
Response.Write(“”+applicationInstance.Name.ToString()+”-“+applicationInstance.Key.ToString()+”

”); 动态objComponents=oCatalog.GetCollection(“组件”,applicationInstance.Key); objComponents.Populate(); foreach(对象组件中的动态组件) { Response.Write(“”+Components.Name.ToString()+”

”); } }
当调用上述调用oCatalog.GetCollection(“Components”,applicationInstance.Key)时,我得到错误:

System.Reflection.TargetParameterCountException:调用时出错 GetCollection

如何获取应用程序实例中当前组件的列表?

您需要向“应用程序”集合询问特定应用程序的组件:

ICOMAdminCatalog2 oCatalog = (ICOMAdminCatalog2) Activator.CreateInstance(Type.GetTypeFromProgID("ComAdmin.COMAdminCatalog"));

ICatalogCollection applications = oCatalog.GetCollection("Applications");
applications.Populate();
foreach (ICatalogObject applicationInstance in applications)
{
    ICatalogCollection comps = applications.GetCollection("Components", applicationInstance.Key);
    comps.Populate();
    foreach (ICatalogObject comp in comps)
    {
        Console.WriteLine("{0} - {1}", comp.Name, comp.Key);
    }
}
有关示例,请点击此处: