C#使用ServiceController控制windows服务
2015-08-15 14:13
1031 查看
C#在,使用ServiceController控制类windows服务,添加首次使用前引文:System.ServiceProcess,空间中引用:using System.ServiceProcess。
以下举例获取本机的全部已安装的Windows服务和应用,然后查找某一应用活服务是否已经安装。
代码:
如果某一服务名为ServicesName, 编写開始服务,停止服务,重新启动服务的代码例如以下:
以下举例获取本机的全部已安装的Windows服务和应用,然后查找某一应用活服务是否已经安装。
代码:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.ServiceProcess; namespace 推断机器中是否安装了某项服务或者应用 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } ServiceController[] Services = ServiceController.GetServices(); private bool ExistSth() { bool exist = false; for (int i = 0; i < Services.Length; i++) { if (Services[i].DisplayName.ToString() == textBox1.Text.Trim()) exist = true; } return exist; } private void button1_Click(object sender, EventArgs e) { if (ExistSth()) MessageBox.Show("已安装"); else MessageBox.Show("未安装"); } private void Form1_Load(object sender, EventArgs e) { for (int i = 0; i < Services.Length; i++) listBox1.Items.Add(Services[i].DisplayName.ToString()); } } }
如果某一服务名为ServicesName, 编写開始服务,停止服务,重新启动服务的代码例如以下:
private ServiceController _controller; private void StopService() { this._controller = new ServiceController("ServicesName"); this._controller.Stop(); this._controller.WaitForStatus(ServiceControllerStatus.Stopped); this._controller.Close(); } private void StartService() { this._controller = new ServiceController("ServicesName"); this._controller.Start(); this._controller.WaitForStatus(ServiceControllerStatus.Running); this._controller.Close(); } private void ResetService() { this._controller = new ServiceController("ServicesName"); this._controller.Stop(); this._controller.WaitForStatus(ServiceControllerStatus.Stopped); this._controller.Start(); this._controller.WaitForStatus(ServiceControllerStatus.Running); this._controller.Close(); }
相关文章推荐
- C#贪吃蛇(窗体版本)
- C# 设置线程的默认CultureInfo
- C# 逻辑语句
- 编写高质量代码改善C#程序的157个建议——建议34:为泛型参数设定约束
- C#装箱拆箱 Nullable
- C# 使用Method进行转换
- C#占位符与格式化字符串
- 编写高质量代码改善C#程序的157个建议——建议33:避免在泛型类型中声明静态成员
- c# 隐式转换 强制转换
- C# abstract类 和 interface 的 区别
- 编写高质量代码改善C#程序的157个建议——建议32:总是优先考虑泛型
- [转]用C#如何实现大文件的断点上传
- C#读取配置文件ini注意事项
- c# 动态执行脚本,相关的几个脚本引擎.
- 编写高质量代码改善C#程序的157个建议——建议31:在LINQ查询中避免不必要的迭代
- C#操作Excel(创建、打开、读写、保存)几种方法的总结
- 编写高质量代码改善C#程序的157个建议——建议30:使用LINQ取代集合中的比较器和迭代器
- c#美味: 微软图表控件MSChart安装部署
- 编写高质量代码改善C#程序的157个建议——建议28:理解延迟求值和主动求值之间的区别
- 编程:C#调用Python模块