如何得到一个系统服务的运行状态?? 急!

jackyhzzjcn 2003-05-19 04:18:12

如停止、启动,暂定等。

谢谢
...全文
109 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
jackyhzzjcn 2003-05-19
  • 打赏
  • 举报
回复
Knight94(愚翁)

是的,MSDN里有例子,开始我不清楚用哪 个NAMESPACE,呵呵。


一直做的WEB开发这些不太用 :)

再次感谢各位,结贴
jackyhzzjcn 2003-05-19
  • 打赏
  • 举报
回复
非常感谢, Knight94(愚翁)的方法没有问题。

ArLi2003(阿利 有好工作叫我) 兄的方法没来得及试,不过麻烦了点 :)

结贴!
ArLi2003 2003-05-19
  • 打赏
  • 举报
回复
private void getServices()
{
ManagementObjectCollection queryCollection;
string[] lvData = new string[4];

try
{
queryCollection = getServiceCollection("SELECT * FROM Win32_Service");
foreach ( ManagementObject mo in queryCollection)
{
//create child node for operating system
lvData[0] = mo["Name"].ToString();
lvData[1] = mo["StartMode"].ToString();
if (mo["Started"].Equals(true))
lvData[2] = "Started";
else
lvData[2] = "Stop";
lvData[3] = mo["StartName"].ToString();

//create list item
ListViewItem lvItem = new ListViewItem(lvData,0);
listViewServices.Items.Add(lvItem);
}
}
catch (Exception e)
{
MessageBox.Show("Error: " + e);
}
}
Knight94 2003-05-19
  • 打赏
  • 举报
回复
如果想查询特定服务,可以使用ServiceController.GetServices(yourServiceName)
Knight94 2003-05-19
  • 打赏
  • 举报
回复
Add references:System.ServiceProcess
using System.ServiceProcess;

至于状态可以用Status与ServiceControllerStatus进行判断,例如:
if(services[n].Status==ServiceControllerStatus.Running)
Knight94 2003-05-19
  • 打赏
  • 举报
回复
可以如下:
ServiceController[] services=ServiceController.GetServices();
foreach(ServiceController service in services)
{ //获得名字:service.ServiceName //显示名字:service.DisplayName
//状态:service.Status
}
ArLi2003 2003-05-19
  • 打赏
  • 举报
回复
比如要确定 w3svc 服务,可以查询注册表:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3SVC

中的Start 键值

另外用wmi 也可以查询

110,537

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧