You
can access the COM+ Catalog from
within any .NET managed component (not only serviced components). To
write installation or configuration code (or manage COM+ events), you
need to add to your project a reference to the
COM+
Admin type library. After you add the reference, the Catalog
interfaces and objects are part of the
COMAdmin
namespace. Example 10-10 shows how to create a catalog object and use
it to iterate over the application collection, tracing to the Output
window the names of all COM+ applications on your computer.
Example 10-10. Accessing the COM+ Catalog and tracing the COM+ application names
using COMAdmin
;
ICOMAdminCatalog catalog;
ICatalogCollection applicationCollection;
ICatalogObject application;
int applicationCount;
int i;//Application index
catalog = (ICOMAdminCatalog)new COMAdminCatalog( );
applicationCollection = (ICatalogCollection)catalog.GetCollection("Applications");
//Read the information from the catalog
applicationCollection.Populate( );
applicationCount = applicationCollection.Count;
for(i = 0;i< applicationCount;i++)
{
//Get the current application
application= (ICatalogObject)applicationCollection.get_Item(i);
int index = i+1;
String traceMessage = index.ToString()+". "+application.Name.ToString( );
Trace.WriteLine(traceMessage);
}
The
System.EnterpriseServices.Admin
namespace contains the COM+ Catalog
object and interface definitions. However, in the Visual Studio.NET
Beta 2, the interfaces are defined as private to that assembly. As a
result, you cannot access them. The obvious workaround is to import
the COM+ Admin type library yourself, as demonstrated in Example 10-10. In the future, you will probably be able to
use System.EnterpriseServices.Admin
namespace
directly. The resulting code, when programming directly using the
System.EnterpriseServices.Admin
namespace, is
almost identical to Example 10-10.