Error with COM + 1.0 Admin Type Library (COMAdmin) interop on Win2K. 2003 works.

G

Grant

I've cross-posted this in the COM+ group as well -
apologies if that's a no-no. But the problem might be
caused by either... interop or just plain COMAdmin.
=============================================

I've got a VB.NET app that is trying to access the
Component Services catalog. The first class method
installs a new component at a specified location. The
second method searches for a specified component and
deletes it.

The reference is to COM + 1.0 Admin Type Library
(COMAdmin)... located in %systemroot%\system32\com\.

The framework version on the 2003 and 2000 servers is
v1.1.4322. The application was developed for that
version (using Visual Studio .NET 2003).

This code works 100% on Windows 2003 server. When trying
to run it on Windows 2000 server, it fails with the
following error:


=START============================================
See the end of this message for details on invoking

just-in-time (JIT) debugging instead of this dialog box.



************** Exception Text **************

System.InvalidCastException: QueryInterface for interface
COMAdmin.ICOMAdminCatalog2 failed.

at COMAdmin.COMAdminCatalogClass.GetCollection(String
bstrCollName)

at
SecurDOCS_COM_Utility.ComponentServicesManager.DeleteCompo
nent(String componentName, String& applicationName)

at SecurDOCS_COM_Utility.COMUtility.btnReplace_Click
(Object sender, EventArgs e)

at System.Windows.Forms.Control.OnClick(EventArgs e)

at System.Windows.Forms.Button.OnClick(EventArgs e)

at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs
mevent)

at System.Windows.Forms.Control.WmMouseUp(Message& m,
MouseButtons button, Int32 clicks)

at System.Windows.Forms.Control.WndProc(Message& m)

at System.Windows.Forms.ButtonBase.WndProc(Message& m)

at System.Windows.Forms.Button.WndProc(Message& m)

at System.Windows.Forms.ControlNativeWindow.OnMessage
(Message& m)

at System.Windows.Forms.ControlNativeWindow.WndProc
(Message& m)

at System.Windows.Forms.NativeWindow.Callback(IntPtr
hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
=END==============================================


Here's the class code:

=START=============================================
Imports COMAdmin

Public Class ComponentServicesManager
Public Sub InstallComponent(ByVal componentName As
String, ByVal applicationName As String)
Dim oCatalog As New COMAdminCatalog

oCatalog.InstallComponent(applicationName,
componentName, Nothing, Nothing)
End Sub

Public Function DeleteComponent(ByVal componentName As
String, ByRef applicationName As String) As Boolean
applicationName = ""
Dim oCatalog As New COMAdminCatalog

' Get the Applications collection and populate it.
Dim oApplications As COMAdminCatalogCollection
oApplications = CType(oCatalog.GetCollection
("Applications"), COMAdminCatalogCollection)
oApplications.Populate()

' Get the correct application
Dim oAppObject As COMAdminCatalogObject

For Each oAppObject In oApplications
' Get and populate the Components collection
Dim oComponents As COMAdminCatalogCollection
oComponents = CType(oApplications.GetCollection
("Components", oAppObject.Key), COMAdminCatalogCollection)
oComponents.Populate()

' Get the correct component
Dim oCompObject As COMAdminCatalogObject
Dim iComponentIndex As Integer = 0

For Each oCompObject In oComponents
Dim sCompDLLValue As String =
oCompObject.Value("DLL").ToString

If sCompDLLValue = componentName Then
applicationName =
oAppObject.Name.ToString
oCatalog.ShutdownApplication
(oAppObject.Name.ToString)
oComponents.Remove(iComponentIndex)
oComponents.SaveChanges()
End If
iComponentIndex += 1
Next

oCompObject = Nothing
Next

If Not applicationName = "" Then
Return True
Else
Return False
End If

oCatalog = Nothing
oApplications = Nothing
oAppObject = Nothing

End Function
End Class

=END==============================================

I need this to work on Windows 2000 server ASAP. Any
ideas what the problem is?

TIA
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top