我想获得某个已知的Service 使用了哪个进程,能获得ID 就好了.要怎么实现啊.
我用WMI已经实现了大多数,代码如下:
问题是如何把这个Service 和进程挂钩啊.
ConnectionOptions localConnection = new ConnectionOptions(); ManagementPath path = new ManagementPath();
ManagementScope scope = new ManagementScope(path, localConnection);
ObjectQuery query = new ObjectQuery("SELECT * FROM Win32_Service where name='"+serviceName+"' "); ManagementObjectSearcher seacher = new ManagementObjectSearcher(scope,query);
ManagementObjectCollection objectCollection = seacher.Get();
ServiceDescription serviceDescription = null;

foreach (ManagementObject service in objectCollection)
{
if(service["Name"].ToString()==serviceName)
{
string status = string.Empty;
if (service["Started"].Equals(true))
status = "Started";
else
status = "Stop";
serviceDescription = new ServiceDescription(service["Name"].ToString(),
status,service["StartName"].ToString());
}
}
return serviceDescription;
如果不用WMI 用甚么方法可以把Service 和进程联系起来也可以的.拜托各位帮忙啊

解决方案 »

  1.   

    ref:
    http://www.codeproject.com/useritems/processownersid.asp
      

  2.   

    servicecontroller 下面没有关于进程的信息啊.
      

  3.   

    有谁可以帮忙啊.我想做个页面,点击这个ServiceName ,就可以获得它进程信息所有内容.
    我现在进程信息也可以了,就是没办法把这个东西关联起来啊.
      

  4.   

    这个连接你看过没有?
    http://www.codeproject.com/useritems/processownersid.asp
      

  5.   

    谢谢idda
    恩,我看到了,问题是我希望我能够同时得到ServiceName 和ProcessId 啊.单独得到Process 的情况我已经解决了.我希望能够有方法把Service 和Process 连接起来
      

  6.   

    没有直接获得,
    间接方法如下:
    1、首先得到服务所对应的exe文件全名;
    2、和进程对应的文件名进行比对,从而挂钩;对于第一点,可以参看
    http://www.pinvoke.net/default.aspx/advapi32/QueryServiceConfig.html
      

  7.   

    痛苦,问题是我要找的3个不同Service ,用的是同一个exe文件创建.
      

  8.   

    to 痛苦,问题是我要找的3个不同Service ,用的是同一个exe文件创建.那你就比较累了,
    先停止两个,然后先确定一个;
    再开启一个,这样可以再确定一个;
    开启最后一个,把第三个也挂钩。