AnsweredAssumed Answered

My VB.NET add-on fails to connect to Solidworks unless launched as an Administrator

Question asked by J. R. on May 7, 2019
Latest reply on Jul 8, 2019 by Jerome De San Nicolás

I am developing an external VB.NET add-on that needs to establish connection with Solidworks upon launch. Here is the code I'm using:

 

Sub ConnectToSolidworks()
    Const PROG_ID As String = "SldWorks.Application"
    Dim progType = System.Type.GetTypeFromProgID(PROG_ID)
    If progType Is Nothing Then MSG("Cannot detect a valid Solidworks installation.") : End : Application.Exit()

    'connect to Solidworks
    Try
        swApp = TryCast(System.Runtime.InteropServices.Marshal.GetActiveObject(PROG_ID), SolidWorks.Interop.sldworks.ISldWorks)
    Catch ex As Exception
        printException(System.Reflection.MethodBase.GetCurrentMethod().Name, ex)
    End Try

    'check if connected
    If swApp Is Nothing Then
        MSG("Unable to connect to Solidworks.")
        End
        Application.Exit()
    End If
End Sub

 

Unfortunately, for whatever reason, the TryCast fails to assign anything to swApp, unless my application is run with Administrator privileges. Weird thing is, some people I sent my application to reported that they managed to get a connection without having to run it as Administrator, but most of them said it failed to connect. I do not want to have a run-as-administrator as a requirement to use my add-on.

 

I have tried, in the past, other methods of connecting to Solidworks (GetObject, CreateObject, Activator.CreateInstance, etc.), but they were plagued with problems, like creating invisible background instances of Solidworks, unreliable connections, etc. TryCast seems to be almost perfect, but for some reason, it doesn't work for everyone without Administrator privileges.

 

What is causing this problem, and how can I fix this?

Outcomes