GetComPlusAppRoleMembers - Retrieving a COM+ Application role's members
' Get an array with the members of an application's role
' Note: requires a reference to the COM+ Admin Type Library
'
' Example:
' Dim members() As String = GetComPlusAppRoleMembers("System Application",
' "Administrator", "")
' Dim member As String
' For Each member In members
' Console.WriteLine(member)
' Next
Function GetComPlusAppRoleMembers(ByVal applicationName As String, _
ByVal roleName As String, ByVal serverName As String) As String()
Dim catalog As New COMAdmin.COMAdminCatalog
catalog.Connect(serverName)
' get the Applications collection
Dim apps As COMAdmin.COMAdminCatalogCollection = CType _
(catalog.GetCollection("Applications"), _
COMAdmin.COMAdminCatalogCollection)
apps.Populate()
Dim AppObj As COMAdmin.COMAdminCatalogObject
For Each AppObj In apps
If applicationName = AppObj.Name.ToString() Then
Dim roles As COMAdmin.COMAdminCatalogCollection = CType _
(apps.GetCollection("Roles", AppObj.Key), _
COMAdmin.COMAdminCatalogCollection)
roles.Populate()
Dim RoleObj As COMAdmin.COMAdminCatalogObject
For Each RoleObj In roles
If roleName = RoleObj.Name.ToString() Then
Dim members As COMAdmin.COMAdminCatalogCollection = CType _
(roles.GetCollection("UsersInRole", RoleObj.Key), _
COMAdmin.COMAdminCatalogCollection)
members.Populate()
' add each member name to an ArrayList
Dim memberNames(members.Count) As String
Dim i As Integer
For i = 0 To members.Count - 1
memberNames(i) = CType(members.Item(i), _
COMAdmin.COMAdminCatalogObject).Name.ToString()
Next i
Return memberNames
End If
Next RoleObj
End If ' convert from the ArrayList to an array of strings,
' and return it
Next AppObj
Dim res(-1) As String
Return res
End Function