COMAdminCatalogObject 類別

代表 COM+ 目錄中集合中的專案。 使用它來擷取和修改集合中專案所公開的屬性。

實作時機

此類別是由 COM+實作。

需求
介面 ICatalogObject

使用時機

使用從 COMAdminCatalogObject 類別建立的物件,修改 COM+ 目錄中集合中包含的專案屬性。 這些專案會對應至元件服務管理工具主控台樹中資料夾內顯示的專案。 元件服務管理工具中的資料夾會對應至目錄中的集合,您可以使用從 COMAdminCatalogCollection 類別建立的物件來表示。

元件服務管理工具中並未提供透過 COMAdminCatalogCollectionCOMAdminCatalogObject 公開的所有集合和專案。

如需特定集合及其屬性的相關資訊,請參閱 COM+ 系統管理集合

如需以程式設計方式管理 COM+ 的簡介,請參閱 自動化 COM+ 管理

備註

您無法直接建立 COMAdminCatalogObject 物件。 若要使用這個物件的方法,您必須建立 COMAdminCatalog 物件、取得 ICOMAdminCatalog的參考,然後使用 ICOMAdminCatalog::GetCollection 來取得代表最上層集合的 ICatalogCollection 介面參考,或使用 ICatalogCollection::GetCollection 來存取不是最上層集合的集合。

取得您感興趣的集合 ICatalogCollection 介面參考之後,請呼叫 ICatalogCollection::P opulate 以填入集合的所有專案。 呼叫 ICatalogCollection::get_Item 來逐一查看集合中的每個專案,以取得每個 ICatalogObject 介面的參考。 當您找到感興趣的專案時,您可以修改專案的屬性並結束反復專案。 如果您對集合中的任何專案進行任何變更,則必須呼叫 ICatalogCollection::SaveChanges 以將變更儲存至 COM+ 目錄。

這會顯示在下列範例中,其中 「TopCollection」 必須取代為其中一個最上層 COM+ 系統管理集合的名稱;「ItemName」 必須取代為您感興趣的專案名稱;「PropertyName」 必須以您在專案中修改的屬性名稱取代;和 varNewProp 必須取代為 VARIANT,其中包含 屬性的新值。

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


若要從 Microsoft Visual Basic 使用此類別,請新增 COM+ 管理員型別程式庫的參考。 您可以在COMAdminCatalog 或 COMAdminCatalogCollection物件上呼叫GetCollection來建立COMAdminCatalogCollection物件。

呼叫COMAdminCatalogCollection物件的Populate方法,以填入集合的所有專案。 逐一查看集合中的每個專案。 當您找到感興趣的專案時,您可以修改專案的屬性並結束反復專案。 如果您對集合中的任何專案進行任何變更,則必須呼叫COMAdminCatalogCollection物件的SaveChanges方法,以將變更儲存至 COM+ 目錄。

這會顯示在下列範例中,其中 「TopCollection」 必須取代為其中一個最上層 COM+ 系統管理集合的名稱;「ItemName」 必須取代為您感興趣的專案名稱;「PropertyName」 必須以您在專案中修改的屬性名稱取代;和 NewPropValue 必須取代為 屬性的新值。

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

規格需求

需求
最低支援的用戶端
Windows 2000 Professional [僅限傳統型應用程式]
最低支援的伺服器
Windows 2000 Server [僅限桌面應用程式]
標頭
ComAdmin.h
Idl
ComAdmin.Idl

另請參閱

COMAdminCatalog

COMAdminCatalogCollection

ICatalogObject