1

サービス名 ( など) を指定して、オブジェクトSNMPTRAPを取得するにはどうすればよいですか?System.Diagnostics.Process

これまでのところ、System.ServiceProcess.ServiceControllerクラスとSystem.Diagnostics.Processクラスを見つけましたが、一方から他方を取得できないようです。

4

1 に答える 1

2

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;
    }
于 2012-09-13T14:12:20.373 に答える