Freigeben über


COMAdminCatalogObject-Klasse

Stellt Elemente in Auflistungen im COM+-Katalog dar. Verwenden Sie sie, um Eigenschaften abzurufen und zu ändern, die von einem Element in einer Auflistung verfügbar gemacht werden.

Gründe für die Implementierung

Diese Klasse wird von COM+ implementiert.

Anforderung Wert
Schnittstellen ICatalogObject

Verwendung

Verwenden Sie Objekte, die aus der COMAdminCatalogObject-Klasse erstellt wurden, um die Eigenschaften von Elementen zu ändern, die in Auflistungen im COM+-Katalog enthalten sind. Diese Elemente entsprechen Elementen, die in Ordnern in der Konsolenstruktur des Komponentendienste-Verwaltungstools angezeigt werden. Ordner im Component Services-Verwaltungstool entsprechen Sammlungen im Katalog, die Sie mithilfe von Objekten darstellen können, die aus der COMAdminCatalogCollection-Klasse erstellt wurden.

Nicht alle Sammlungen und Elemente, die über COMAdminCatalogCollection und COMAdminCatalogObject verfügbar gemacht werden, sind im Component Services-Verwaltungstool verfügbar.

Informationen zu bestimmten Sammlungen und deren Eigenschaften finden Sie unter COM+-Verwaltungssammlungen.

Eine Einführung in die programmgesteuerte Verwaltung von COM+ finden Sie unter Automatisieren der COM+-Verwaltung.

Bemerkungen

Sie können kein COMAdminCatalogObject-Objekt direkt erstellen. Um die Methoden dieses Objekts zu verwenden, müssen Sie ein COMAdminCatalog-Objekt erstellen, einen Verweis auf ICOMAdminCatalog abrufen und dann ICOMAdminCatalog::GetCollection verwenden, um einen Verweis auf eine ICatalogCollection-Schnittstelle abzurufen, die eine Auflistung der obersten Ebene darstellt, oder ICatalogCollection::GetCollection verwenden, um auf Sammlungen zuzugreifen, die nicht auf der obersten Ebene sind.

Nachdem Sie über einen Verweis auf die ICatalogCollection-Schnittstelle der gewünschten Auflistung verfügen, rufen Sie ICatalogCollection::P opulate auf, um die Auflistung mit allen zugehörigen Elementen aufzufüllen. Durchlaufen Sie jedes Element in der Auflistung, indem Sie ICatalogCollection::get_Item aufrufen, um einen Verweis auf jede ICatalogObject-Schnittstelle zu erhalten. Wenn Sie das interessante Element gefunden haben, können Sie die Eigenschaften des Elements ändern und die Iteration beenden. Wenn Sie Änderungen an Elementen in einer Sammlung vornehmen, müssen Sie ICatalogCollection::SaveChanges aufrufen, um die Änderungen im COM+-Katalog zu speichern.

Dies wird im folgenden Beispiel gezeigt, wobei "TopCollection" durch den Namen einer der COM+-Verwaltungssammlungen der obersten Ebene ersetzt werden muss. "ItemName" muss durch den Namen des Elements ersetzt werden, an dem Sie interessiert sind; "PropertyName" muss durch den Namen der Eigenschaft ersetzt werden, die Sie im Element ändern. und varNewProp müssen durch einen VARIANT-Wert ersetzt werden, der den neuen Wert für die -Eigenschaft enthält.

// Convert ItemName to a BSTR.
bstrItemName = SysAllocString(L"ItemName");
HRESULT hr = CoCreateInstance(CLSID_COMAdminCatalog, NULL, 
  CLSCTX_INPROC_SERVER, IID_IUnknown, (void**)&pUnknown);
if (FAILED(hr)) exit(0);  // Replace with specific error handling.
hr = pUnknown->QueryInterface(IID_ICOMAdminCatalog, 
  (void**)&pCatalog); 
if (FAILED(hr)) exit(0);  // Replace with specific error handling.
hr = pCatalog->GetCollection(L"TopCollection", 
  (IDispatch**)&pTopColl);
if (FAILED(hr)) exit(0);  // Replace with specific error handling.
// Populate the TopCollection collection.
hr = pTopColl->Populate();
if (FAILED(hr)) exit(0);  // Replace with specific error handling.
// Get the number of items in the collection.
hr = pTopColl->get_Count(&lCount);
if (FAILED(hr)) exit(0);  // Replace with specific error handling.
VARIANT varName;
VariantInit(&varName);
// Iterate through each item in the collection.
for (LONG lIdx = 0; lIdx < lCount; lIdx++) {
    hr = pTopColl->get_Item(lIdx, (IDispatch**)&pItem);
    if (FAILED(hr)) exit(0);  // Replace with specific error handling.
    hr = pItem->get_Name(&varName);
    if (FAILED(hr)) exit(0);  // Replace with specific error handling.
    // Compare the item name to bstrItemName.
    hr = VarBstrCmp(varName.bstrVal, bstrItemName, 1024L, NULL);
    if (FAILED(hr)) exit(0);  // Replace with specific error handling.
    if (VARCMP_EQ == hr) {  // The strings are equal.
        // Use the put_Value method to modify properties of the item.
        hr = pItem->put_Value(L"PropertyName", varNewProp);
        if (FAILED(hr)) exit(0);  // Replace with specific error handling.
        break;  // Exit the iteration.
    }
}
hr = pTopColl->SaveChanges(&lNum);
if (FAILED(hr)) exit(0);  // Replace with specific error handling.
SysFreeString(bstrItemName);


Um diese Klasse aus Microsoft Visual Basic zu verwenden, fügen Sie einen Verweis auf die COM+-Admin-Typbibliothek hinzu. Ein COMAdminCatalogCollection-Objekt kann erstellt werden, indem GetCollection für ein COMAdminCatalog - oder COMAdminCatalogCollection-Objekt aufgerufen wird.

Rufen Sie die Populate-Methode des COMAdminCatalogCollection-Objekts auf, um die Auflistung mit allen zugehörigen Elementen aufzufüllen. Durchlaufen Sie die einzelnen Elemente in der Auflistung. Wenn Sie das interessante Element gefunden haben, können Sie die Eigenschaften des Elements ändern und die Iteration beenden. Wenn Sie Änderungen an Elementen in einer Auflistung vornehmen, müssen Sie die SaveChanges-Methode des COMAdminCatalogCollection-Objekts aufrufen, um die Änderungen im COM+-Katalog zu speichern.

Dies wird im folgenden Beispiel gezeigt, wobei "TopCollection" durch den Namen einer der COM+-Verwaltungssammlungen der obersten Ebene ersetzt werden muss. "ItemName" muss durch den Namen des Elements ersetzt werden, an dem Sie interessiert sind; "PropertyName" muss durch den Namen der Eigenschaft ersetzt werden, die Sie im Element ändern. und NewPropValue müssen durch den neuen Wert für die -Eigenschaft ersetzt werden.

Dim objCatalog As COMAdmin.COMAdminCatalog
Set objCatalog = CreateObject("COMAdmin.COMAdminCatalog")
Dim objTopCollection As COMAdmin.COMAdminCatalogCollection
Set objTopCollection = objCatalog.GetCollection("TopCollection")
objTopCollection.Populate
Dim objItem As COMAdmin.COMAdminCatalogObject
For Each objItem in objTopCollection
    If objItem.Name = "ItemName" Then
        objItem.Value("PropertyName") = NewPropValue
        Exit For
    End If
Next
objAppCollection.SaveChanges

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client)
Windows 2000 Professional [nur Desktop-Apps]
Unterstützte Mindestversion (Server)
Windows 2000 Server [nur Desktop-Apps]
Header
ComAdmin.h
IDL
ComAdmin.Idl

Siehe auch

COMAdminCatalog

COMAdminCatalogCollection

ICatalogObject