サービス名 ( など) を指定して、オブジェクトSNMPTRAP
を取得するにはどうすればよいですか?System.Diagnostics.Process
これまでのところ、System.ServiceProcess.ServiceControllerクラスとSystem.Diagnostics.Processクラスを見つけましたが、一方から他方を取得できないようです。
サービス名 ( など) を指定して、オブジェクトSNMPTRAP
を取得するにはどうすればよいですか?System.Diagnostics.Process
これまでのところ、System.ServiceProcess.ServiceControllerクラスとSystem.Diagnostics.Processクラスを見つけましたが、一方から他方を取得できないようです。
WMIは相互運用/Win32に頼る必要なしに機能するように見えます。以下は概念実証です。
private static Process ProcessFromServiceName(string serviceName)
{
// Note abuse of foreach as a lazy way of getting first item.
// Also assumes that the first service in the collection is the correct one.
string queryText = String.Format( CultureInfo.InvariantCulture,
"SELECT * FROM Win32_Service WHERE Name='{0}'",
serviceName);
var query = new SelectQuery(queryText);
var searcher = new ManagementObjectSearcher(query);
foreach (ManagementObject service in searcher.Get())
{
int processId = (int)(uint)service.Properties["ProcessId"].Value;
Process process = Process.GetProcessById(processId);
return process;
}
return null;
}