I am trying to add components to com services in a vb.net app. I have gotten everything working as it should apart from assigning a user role to the component. The component cant be accessed without this specified role.
Below is my code for adding the object, I keep getting a "value does not fall within the expected range" error.
Any help with this would be greatly appreciated.
Public Function InstallComPlusComponent(ByVal applicationName As String, _
ByVal componentAddress As String, ByVal serverName As String) As Boolean
Dim catalog As New COMAdmin.COMAdminCatalog
Dim componentName, localAddress As String
Dim componentClass() As String
Try
catalog.Connect(serverName)
Catch COMEx As COMException
catalog.Connect(My.Computer.Name)
'Return False
End Try
If Not CheckComPlusAppExists(serverName, applicationName) Then
Try
AddComPlusApplication(applicationName, serverName)
Catch Ex As COMException
Debug.WriteLine(Ex.Message.ToString)
Return False
Exit Function
End Try
End If
Try
localAddress = GENERATE_LocalPath(componentAddress)
catalog.InstallComponent(applicationName, localAddress, "", "")
'componentName = Microsoft.VisualBasic.Right(componentAddress, 26)
'componentName = Microsoft.VisualBasic.Left(componentName, 22)
'componentClass = Microsoft.VisualBasic.Split(Microsoft.VisualBasic.Right(componentName, 11), ".")
'componentName = componentName & "." & componentClass(0)
componentName = My.Settings.ComName
Dim apps As COMAdmin.COMAdminCatalogCollection = CType _
(catalog.GetCollection("Applications"), _
COMAdmin.COMAdminCatalogCollection)
apps.Populate()
Dim app As COMAdmin.COMAdminCatalogObject
For Each app In apps
If applicationName = app.Name.ToString Then
'GET Component Collection of Application and Populate
'FINDS ALL COMS in INTEGRATION OBJECTS
Dim Comps As COMAdmin.COMAdminCatalogCollection = CType _
(apps.GetCollection("Components", app.Key), _
COMAdmin.COMAdminCatalogCollection)
Comps.Populate()
'Transaction Option Enum Setting
Dim TransactionOption As COMAdminTransactionOptions = _
COMAdminTransactionOptions.COMAdminTransactionNone
Dim iCounter As Integer
'looks through the components to find component
For iCounter = Comps.Count - 1 To 0 Step -1
Dim str As String = Comps.Item(iCounter).Name
Console.WriteLine(str)
Console.WriteLine(componentName)
Console.WriteLine("---------------------")
'If Comps.RemoveEnabled Then
If Comps.Item(iCounter).Name = componentName Then
Dim Comp As COMAdmin.COMAdminCatalogObject
Comp = Comps.Item(iCounter)
'Comp.Value("Transaction") = CType(TransactionOption, Object)
'Comp.Value("Authentication") = CType(COMAdminAuthenticationLevelOptions.COMAdminAuthenticationConnect, Object)
Comp.Value("Identity") = CType(frmLogin.strUser.ToString, Object)
Comp.Value("Password") = CType(frmLogin.strpassword.ToString, Object)
Comps.SaveChanges()
End If
'End If
Next iCounter
Exit For
End If
Next 'appOnj In apps
Catch COMEx As Exception
Debug.Print("Cannot Install COM+ DLL to Server")
MessageBox.Show("Cannot Install COM+ DLL to Server" + vbNewLine + COMEx.ToString)
Return False
End Try
Return True
End Function