2012-01-16 78 views
2

這裏是必須將進程按路徑返回到可執行文件的方法。 但是,當我嘗試調用此方法時,我有一個異常Win32Exception「訪問被拒絕」。 那麼該怎麼做對不對?按執行路徑獲取進程

private static List<Process> GetProcessByFilename(string filename) 
     { 
      List<Process> processes = new List<Process>(); 

      foreach (var process in Process.GetProcesses()) 
      { 
       if (process.MainModule.FileName == filename) 
       { 
        processes.Add(process); 
       } 
      } 
      return processes; 
     } 

回答

4

試圖讓核心系統進程的MainModule(見comments on MSDN)時,您將獲得Win32Exception。你應該處理。

1

正如消息所述,您有「訪問被拒絕」問題。有可能您的Windows Credential沒有必要的權限來完成所需的Win32調用..

1

這個異常究竟在哪裏拋出?首先,你不允許查詢所有的Win32進程路徑,有些沒有,最後你可能沒有足夠的訪問權限運行。

要知道哪些適用於您的情況,我需要知道您的代碼路徑中的哪個位置獲取了異常以及哪個進程(如果不是全部)引發異常。