2017-06-22 9 views
0

でプロセス(およびその説明)を検索するために使用されるManagementObjectSearcher私はプロセスをリストするプログラムに取り組んでいます。特定のプロセスをクリックすると、その説明がわかります。c#PID:

私のアイデア(実際に私はWeb上で見つけたものと同様のものを変更しました)は、SQL文でManagementObjectSearcherを使用することでした( "Select * From Win32_Process WHERE ProcessID =" + a);ここで "a"はプロセスIDを含む文字列変数です。いくつかのプロセスでは、その作業(クロム、電卓など)といくつかのために(svchost、tiltweelmouseなど)はありません。部分的に解決される問題、誰も気にならば、プラットフォームを設定する必要があります

private void Lista_procesa_prikaz_MouseClick(object sender, MouseEventArgs e) 
    { 
     string a = Lista_procesa_prikaz.Items[Lista_procesa_prikaz.FocusedItem.Index].SubItems[1].Text; 
     var searcher = new ManagementObjectSearcher("Select * From Win32_Process WHERE ProcessID="+a); 
     var proces = searcher.Get(); 
     foreach (var process in proces) 
     { 
      var processName = process["Name"]; 
      var processPath = process["ExecutablePath"]; 

      if (processPath != null) 
      { 
       var fileVersionInfo = FileVersionInfo.GetVersionInfo(processPath.ToString()); 
       var processDescription = fileVersionInfo.FileDescription; 
       Description_textbox.Text = processDescription.ToString(); 
      } 
     } 
    } 

誰かが私は本当に幸せになる、ここで間違え発見することができれば、 すべてのヘルプは

を高く評価しているが

EDITはありがとうプロジェクト、yourProjectName に.GO(私の場合)のx64へ性質ビルドプラットフォームターゲット:x64

+1

_guess_私はそれが失敗したprocsがadminとして実行されていると言いたいと思います。 – Mathemats

+0

@Mathematsうーん、そうかもしれないので、どうすればこれらのエラーを避けるために私のプログラムを管理者としてC#から実行するべきですか?また、if(processPath!= null)の後に "else textbox.text = null"それでも時々エラーがポップアップし、未処理例外 –

答えて

0

ManagementObjectSearcherである必要があるかどうかわかりませんが、同じデータを取得するマネージクラスをお勧めします。

昇格された権限がない場合は、両方の方法を使用してパスを読み込もうとします。これらの特権を取得するには、そのためにusing a manifestを検討してください。