Поделиться через


Класс COMAdminCatalogObject

Представляет элементы в коллекциях в каталоге COM+. Используйте его для получения и изменения свойств, предоставляемых элементом в коллекции.

Когда следует реализовать

Этот класс реализуется с помощью COM+.

Требование Значение
Интерфейсы ICatalogObject

Назначение

Используйте объекты, созданные из класса COMAdminCatalogObject , для изменения свойств элементов, содержащихся в коллекциях в каталоге COM+. Эти элементы соответствуют элементам, отображаемым внутри папок в дереве консоли средства администрирования служб компонентов. Папки в средстве администрирования служб компонентов соответствуют коллекциям в каталоге, которые можно представить с помощью объектов, созданных из класса COMAdminCatalogCollection .

Не все коллекции и элементы, предоставляемые через COMAdminCatalogCollection и COMAdminCatalogObject , доступны в средстве администрирования служб компонентов.

Сведения о конкретных коллекциях и их свойствах см. в разделе Коллекции администрирования 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+ Администратор. Объект COMAdminCatalogCollection можно создать, вызвав Метод GetCollection для объекта COMAdminCatalog или COMAdminCatalogCollection .

Вызовите метод Populate объекта COMAdminCatalogCollection , чтобы заполнить коллекцию всеми ее элементами. Выполните итерацию по каждому элементу в коллекции. Когда вы найдете интересующий элемент, вы можете изменить его свойства и выйти из итерации. При внесении каких-либо изменений в какие-либо элементы в коллекции необходимо вызвать метод SaveChanges объекта COMAdminCatalogCollection , чтобы сохранить изменения в каталоге 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