Именованные значения ICatalogObject - PullRequest
2 голосов
/ 20 марта 2012

Я пытаюсь объединить значения объекта ICatalogObject с помощью VBScript.Когда я смотрю на свойства объекта COM + в COM Services Explorer, я вижу свойства, такие как «Имя», «Описание», «DLL» и т. Д., Как показано ниже).Я предполагаю (возможно, ошибочно), что они выставляются через коллекцию свойств Value как именованные свойства.Моя проблема состоит в том, что я изо всех сил пытаюсь найти список того, каковы настоящие имена этих именованных свойств.Вы не можете вызвать Value без указания имени свойства - и я еще не нашел краткий список именованных свойств.Я пытался использовать имена, на которые есть ссылки на подписи на скриншоте, но безрезультатно.Есть ли где-нибудь список этих Именованных Значений, или я могу каким-то образом получить коллекцию Имен Значений?

Мне удалось определить, что следующие возвращаемые значения: Удалить, Описание

пример кода:

Dim appName
appName = WScript.Arguments.Item(0)
Dim catalog, apps, app
Set catalog = CreateObject("COMAdmin.COMAdminCatalog")
Set apps = catalog.GetCollection("Applications")
apps.Populate
For each app in apps
if app.Name = appName then
    if app.Value("DLL") = "C:\temp\MyDll.dll" then
        'code to do something -- however I don't know what the named property 
        'that contains the DLL file location is called.
    end if 
end if    
Next

Изображение некоторых свойств, которые я хочу, например: DLL enter image description here

1 Ответ

1 голос
/ 11 апреля 2012

Согласен - трудно найти документацию.Интересующее вас свойство (DLL) находится на уровне компонента, а не на уровне приложения.Вы можете найти список свойств для компонентов здесь .Внизу COMAdminCatalogObject вы можете найти пример для извлечения компонентов.

Пример будет выглядеть примерно так:

Dim appName
appName = WScript.Arguments.Item(0)
Dim catalog, apps, app
Set catalog = CreateObject("COMAdmin.COMAdminCatalog")
Set apps = catalog.GetCollection("Applications")
apps.Populate
For each app in apps

  if app.Name = appName then
    WScript.Echo "Processing Application " & app.Name

    Dim Components
    Set Components = apps.GetCollection("Components", app.Key) 
    Components.Populate

    Dim CompObject
    For Each CompObject in Components 
      Wscript.echo "  Component " & CompObject.Name & " is in DLL " & CompObject.Value("DLL")
    Next 
  end if    
Next
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...