リモート接続するリモート PC が 3 台あります。特定のプロセスがいずれかのマシンで実行されているかどうかを単一のウィンドウに表示する単純な Windows アプリケーションを作成しようとしています。
Server1: Chrome が実行されていません
Server2: Chrome が実行中です
Server3: Chrome が実行中です
WMI と C# を使用しました。これまでのところ、私はこれだけ持っています:
ConnectionOptions connectoptions = new ConnectionOptions();
connectoptions.Username = @"domain\username";
connectoptions.Password = "password";
//IP Address of the remote machine
string ipAddress = "192.168.0.217";
ManagementScope scope = new ManagementScope(@"\\" + ipAddress + @"\root\cimv2");
scope.Options = connectoptions;
//Define the WMI query to be executed on the remote machine
SelectQuery query = new SelectQuery("select * from Win32_Process");
using (ManagementObjectSearcher searcher = new
ManagementObjectSearcher(scope, query))
{
ManagementObjectCollection collection = searcher.Get();
foreach (ManagementObject process in collection)
{
// dwarfs stole the code!! :'(
}
}
すべて正しく設定されていると思いますが、 foreach ループ内で MessageBox.Show(process.ToString()) を実行すると、次のテキストを含むメッセージ ボックスが大量に表示されます。
\\username\root\cimv2:W32_Process.Handle="XXX"
私はちょっと立ち往生しています。その XXX をプロセス名に「変換」する方法はありますか? または、実際にプロセスの名前を取得して、if ステートメントを使用して「クロム」プロセスであるかどうかを確認するにはどうすればよいですか?
または...私の実装はやり過ぎですか?これを達成する簡単な方法はありますか?
どうもありがとう!