Question

What is the best method for determining if the Cisco Webex client is running on a user's computer? Currently, I'm checking for a running process like this:

public static bool IsWebExClientRunning()
{
    // webex process name started from internet browser (could change). Just use Process Explorer to find the sub process name.
    // alternate name - CiscoWebexWebService
    Process[] pname = Process.GetProcessesByName("atmgr"); 
    return pname.Length > 0;
}

While this method works, there could be an instance where Cisco pushes out updates to their client that changes the process name which would break this code if we're looking for a specific process name.

The Webex client starts as a child process from an Internet browser since it is technically a browser plugin and it doesn't show up on its own in Windows Task Manager. I have seen both atmgr and CiscoWebexWebService using Process Explorer to find the process. Sometimes, depending on the host operating system, Windows XP/Windows 7, it will just display atmgr and not the child process CiscoWebexWebService belonging to atmgr. It also varies slightly based on the browser that is used. It runs as a browser plugin for all supported browsers and for unsupported browsers, it will give the option to run as a standalone application.

The process tree can vary (i.e. other browsers/operating systems), but it looks something like this:

iexplore.exe  
    -> atmgr.exe  
        -> CiscoWebexWebService.exe  

Obviously, all checks must be done client side and not server side, but is there a better method for approaching this?

Was it helpful?

Solution

I spoke with a Cisco specialist and they said that my current approach should be safe for detecting if the Webex client is running a user's machine. They were able to confirm that the process name is atmgr.exe and should not change in the near future.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top