2014-07-01 81 views
1

我正在为一家软件公司编程。
我们公司有一个名为(common component command)ccc.exe的应用程序。此应用程序用于将命令发送到Microsoft IIS服务器。从应用程序中检测系统文件运行过程

现在,在我的程序中,我想检测运行此进程(ccc.exe)。

在此之后我用这个方法:

private bool IsProcessRunning(string processName) 
    {    
     Process[] pname = Process.GetProcessesByName(processName); 
     if (pname.Length == 0) 
      return false; 
     else 
      return true; 
    } 

但不幸的是他们的计算机上运行调用CCC.EXE(这是来自ATI Technologies)的一个系统过程。

它在启动时运行。如果我使用这种方法,它将返回一个错误的值,因为它们具有相同的名称。

那么,如何从ccc.exe * 32识别CCC.EXE(系统文件)呢?

+3

检查'Process'对象的完整路径。 – SLaks

+0

检查散列值(但是当你更新ccc.exe时你有问题)或者检查公司文件的属性或... – lordkain

+0

你想达到什么目的?你想防止你的应用程序多次启动?你应该使用一个互斥体。 – PMF

回答

1

你可以尝试看Process.MainModule属性:

Process[] pname = Process.GetProcessesByName(processName); 
if (pname.Any(x => x.MainModule.FileName == "the path to the ccc.exe")) 
{ 
    return true; 
} 

return false; 

注:被警告我有时候发现而groking Process对象,事情该工作DEV并不总是在生产中因安全工作权限。

相关问题