2017-10-06 5 views
0

"System.Diagnostics"名前空間のProcess.GetProcesses()を使用してすべてのプロセスを取得できました。C#:ServiceController.GetServices()を使用して特定のプロセス名のみのサービスを収集する方法

"ServiceController.GetServices()"を使用して特定のプロセス内ですべてのサービス名を取得する方法はありますか?

foreach (var theProcess in Process.GetProcesses()) 
      { 
       if(theProcess.ProcessName.ToUpper() == "SVCHOST") 
       { 
        ServiceController.GetServices().Where(e=>e.) 
       } 

       //Console.WriteLine("Process: {0} ID: {1}", theProcess.ProcessName, theProcess.Id); 
      } 

答えて

3

ませんあなたは特別な属性または性質を持っていないので、方法はありません。しかし、同じことをすることができますManagementObjectSearcher

foreach (var theProcess in Process.GetProcesses()) 
{ 
    if (theProcess.ProcessName.ToUpper() == "SVCHOST") 
    { 
     ManagementObjectSearcher mos = new ManagementObjectSearcher("root\\CIMV2", string.Format("SELECT * FROM Win32_Service " + "where ProcessId={0}", theProcess.Id)); 
     foreach (ManagementObject mo in mos.Get()) 
     { 
      Console.WriteLine("Name: " + mo["Name"]); 
     } 
    } 
} 
+0

はい、ありがとう。私はこれを知っている。ちょうど私はWMIを排除したい – user584018

関連する問題