2012-03-20 3 views
2

VBScript를 사용하여 ICatalogObject 개체의 값을 interogate하려고합니다. COM 서비스 탐색기에서 COM + 개체의 속성을 보면 아래에 표시된대로 '이름', '설명', 'DLL'등의 속성을 볼 수 있습니다. ValueProperty 컬렉션을 통해 명명 된 속성으로 노출되는 것으로 가정합니다 (아마도 그렇게 까다롭기 때문에). 내 문제는 이러한 명명 된 속성의 실제 이름이 무엇인지 목록을 찾는 데 어려움을 겪고 있다는 것입니다. 속성 이름을 지정하지 않고 Value를 호출 할 수 없으며 명명 된 속성의 간결한 목록을 아직 찾지 못했습니다. 스크린 샷의 캡션에 언급 된 이름을 사용하려고했지만 아무 소용이 없었습니다. 이 명명 된 값의 어딘가에 목록이 있습니까? 아니면 어떻게 든 값 이름의 모음을 검색 할 수 있습니까?ICatalogObject의 명명 된 값

나는 deterime 할 수있었습니다 그 다음 반환 값 : 삭제 가능한, 설명

샘플 코드 : 내가 원하는 특성의 일부

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

동의합니다. 문서를 찾기가 어렵습니다. 관심있는 속성 (DLL)은 응용 프로그램 수준이 아니라 구성 요소 수준에 있습니다. 구성 요소 here의 등록 정보 목록을 찾을 수 있습니다. 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 
+0

감사 :

샘플은 같을 것입니다. – codechurn