我想获得某个已知的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 和进程联系起来也可以的.拜托各位帮忙啊
我用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 和进程联系起来也可以的.拜托各位帮忙啊
http://www.codeproject.com/useritems/processownersid.asp
我现在进程信息也可以了,就是没办法把这个东西关联起来啊.
http://www.codeproject.com/useritems/processownersid.asp
恩,我看到了,问题是我希望我能够同时得到ServiceName 和ProcessId 啊.单独得到Process 的情况我已经解决了.我希望能够有方法把Service 和Process 连接起来
间接方法如下:
1、首先得到服务所对应的exe文件全名;
2、和进程对应的文件名进行比对,从而挂钩;对于第一点,可以参看
http://www.pinvoke.net/default.aspx/advapi32/QueryServiceConfig.html
先停止两个,然后先确定一个;
再开启一个,这样可以再确定一个;
开启最后一个,把第三个也挂钩。