Classe COMAdminCatalogObject

Rappresenta gli elementi nelle raccolte nel catalogo COM+. Usarlo per recuperare e modificare le proprietà esposte da un elemento in una raccolta.

Quando implementare

Questa classe viene implementata da COM+.

Requisito Valore
Interfacce ICatalogObject

Utilizzo

Usare gli oggetti creati dalla classe COMAdminCatalogObject per modificare le proprietà degli elementi contenuti nelle raccolte nel catalogo COM+. Questi elementi corrispondono agli elementi visualizzati all'interno di cartelle nell'albero della console dello strumento di amministrazione di Servizi componenti. Le cartelle nello strumento di amministrazione di Servizi componenti corrispondono alle raccolte nel catalogo, che è possibile rappresentare usando oggetti creati dalla classe COMAdminCatalogCollection .

Non tutte le raccolte e gli elementi esposti tramite COMAdminCatalogCollection e COMAdminCatalogObject sono disponibili nello strumento di amministrazione di Servizi componenti.

Per informazioni sulle raccolte specifiche e sulle relative proprietà, vedere Raccolte di amministrazione COM+.

Per un'introduzione all'amministrazione a livello di codice di COM+, vedere Automazione dell'amministrazione COM+ .

Commenti

Non è possibile creare direttamente un oggetto COMAdminCatalogObject . Per usare i metodi di questo oggetto, è necessario creare un oggetto COMAdminCatalog, ottenere un riferimento a ICOMAdminCatalog e quindi usare ICOMAdminCatalog::GetCollection per ottenere un riferimento a un'interfaccia ICatalogCollection che rappresenta un insieme di primo livello o usare ICatalogCollection::GetCollection per accedere alle raccolte non di primo livello.

Dopo avere un riferimento all'interfaccia ICatalogCollection della raccolta in cui si è interessati, chiamare ICatalogCollection::P opulate per popolare la raccolta con tutti gli elementi. Eseguire l'iterazione di ogni elemento della raccolta chiamando ICatalogCollection::get_Item per ottenere un riferimento a ogni interfaccia ICatalogObject . Quando si trova l'elemento di interesse, è possibile modificare le proprietà dell'elemento e uscire dall'iterazione. Se si apportano modifiche a qualsiasi elemento di una raccolta, è necessario chiamare ICatalogCollection::SaveChanges per salvare le modifiche nel catalogo COM+.

Questo è illustrato nell'esempio seguente, dove "TopCollection" deve essere sostituito dal nome di una delle raccolte di amministrazione COM+ di primo livello; "ItemName" deve essere sostituito dal nome dell'elemento a cui si è interessati; "PropertyName" deve essere sostituito dal nome della proprietà modificata nell'elemento; e varNewProp deve essere sostituito da un VARIANT che contiene il nuovo valore per la proprietà.

// 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);


Per usare questa classe da Microsoft Visual Basic, aggiungere un riferimento alla libreria di tipi COM+ Amministrazione. Un oggetto COMAdminCatalogCollection può essere creato chiamando GetCollection in un oggetto COMAdminCatalog o COMAdminCatalogCollection.

Chiamare il metodo Popolamento dell'oggetto COMAdminCatalogCollection per popolare l'insieme con tutti gli elementi. Eseguire l'iterazione di ognuno degli elementi dell'insieme. Quando si trova l'elemento di interesse, è possibile modificare le proprietà dell'elemento e uscire dall'iterazione. Se si apportano modifiche a qualsiasi elemento di una raccolta, è necessario chiamare il metodo SaveChanges dell'oggetto COMAdminCatalogCollection per salvare le modifiche al catalogo COM+.

Questo è illustrato nell'esempio seguente, dove "TopCollection" deve essere sostituito dal nome di una delle raccolte di amministrazione COM+ di primo livello; "ItemName" deve essere sostituito dal nome dell'elemento a cui si è interessati; "PropertyName" deve essere sostituito dal nome della proprietà modificata nell'elemento; e NewPropValue deve essere sostituito dal nuovo valore per la proprietà.

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

Requisiti

Requisito Valore
Client minimo supportato
Windows 2000 Professional [solo app desktop]
Server minimo supportato
Windows 2000 Server [solo app desktop]
Intestazione
ComAdmin.h
IDL
ComAdmin.Idl

Vedi anche

COMAdminCatalog

COMAdminCatalogCollection

ICatalogObject