C# 检测Webex客户端是否正在运行的可靠方法

C# 检测Webex客户端是否正在运行的可靠方法,c#,process,cisco,webex,C#,Process,Cisco,Webex,确定Cisco Webex客户端是否在用户计算机上运行的最佳方法是什么?目前,我正在检查是否有这样一个正在运行的进程: public static bool IsWebExClientRunning() { // webex process name started from internet browser (could change). Just use Process Explorer to find the sub process name. // alternate n

确定Cisco Webex客户端是否在用户计算机上运行的最佳方法是什么?目前,我正在检查是否有这样一个正在运行的进程:

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;
}
iexplore.exe  
    -> atmgr.exe  
        -> CiscoWebexWebService.exe  
当这种方法工作时,可能会有一个实例,Cisco向其客户机推出更新,该更新会更改进程名称,如果我们正在查找特定的进程名称,则会破坏此代码

Webex客户端从Internet浏览器作为子进程启动,因为从技术上讲,它是一个浏览器插件,并且不会在Windows任务管理器中单独显示。我已经看到atmgrCiscoWebexWebService使用Process Explorer查找流程。有时,根据主机操作系统Windows XP/Windows 7的不同,它将只显示atmgr,而不显示属于atmgr的子进程CiscoWebexWebService。它还根据所使用的浏览器略有不同。它以浏览器插件的形式运行,适用于所有受支持的浏览器,对于不受支持的浏览器,它将提供作为独立应用程序运行的选项

进程树可能会有所不同(即其他浏览器/操作系统),但它的外观如下所示:

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;
}
iexplore.exe  
    -> atmgr.exe  
        -> CiscoWebexWebService.exe  

显然,所有的检查都必须在客户端而不是服务器端进行,但是有没有更好的方法来实现这一点呢?

我和一位Cisco专家谈过,他们说我目前的方法应该可以安全地检测Webex客户端是否正在运行用户的机器。他们能够确认进程名是
atmgr.exe
,并且在不久的将来不会更改