2014-07-01 116 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並不總是在生產中因安全工作權限。

相關問題