Класс 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 [только классические приложения] |
Заголовок |
|
IDL |
|