10


0

プロセス情報を取得しようとしていますが、使用できることを認識しています。

Process [] myProcesses = Process.GetProcesses();

しかし、どうすればプロセスの説明を取得できますか? それはいくつかのWin32 API呼び出し経由ですか? Vistaを実行していますが、タスクマネージャの[プロセス]タブをクリックすると、説明が表示されます。

3 Answer


11


タスクマネージャに表示されるのは、実際には実行可能イメージの[説明]フィールドです。

様々なバージョン情報にアクセスするために GetFileVersionInfo()`と `VerQueryValue() WinAPI呼び出しを使うことができます。 CompanyNameまたはFileDescription。

NETの場合は、 Process.MainModule.FileName`で取得した実行ファイル名でインスタンス化した、 FileVersionInfo`の `FileDescription`メンバーを使用してください。

もう一つの方法は `議会 'を通してでしょう。 実行可能イメージからアセンブリをロードしてから、 `AssemblyDescriptionAttribute`カスタム属性を問い合わせます。


10


あなたはただプロパティのもう少し先に行く必要があります。 メモ帳のインスタンスが実行されているとします。

Process [] proc = Process.GetProcessesByName( "notepad"); Console.WriteLine( "プロセスのバージョン - " proc [0] .MainModule.FileVersionInfo.FileVersion); Console.WriteLine( "プロセスの説明 - " proc [0] .MainModule.FileVersionInfo.FileDescription);

そこに行きます!


1


これが私がそうすることができる唯一の方法です。 私はProcessとWin32_Processを試しましたが、行きません。

システムを使用する。 System.Collections.Genericを使用します。 System.Linqを使用します。 System.Textを使用します。 System.Managementを使用します。 System.Diagnosticsを使用します。

名前空間管理{クラスプログラム{静的void Main(string [] args)}

foreach(psのvar p){try {var desc = FileVersionInfo.GetVersionInfo(p.MainModule.FileName);} Console.WriteLine(desc.FileDescription); } {Console.WriteLine( "Access Denied"); }}

Console.ReadLine(); }}}