ServiceController操作Windows服务

 

使用.Net框架类库中自带的组件ServiceController可以实现对 Windows服务的操作。创建 ServiceController 的实例后,必须为其设置两个属性来标识与其交互的服务:计算机名称和要控制的服务的名称,MachineName 默认设置为本地计算机,除非想将该实例设置为指向另一台计算机不,否则不要修改。

方法:ServiceController.GetServices()返回非设备驱动程序服务和不是驱动程序的服务。若要检索设备驱动程序服务,请调用 GetDevices 方法。这两种方法一起提供对计算机上所有服务的访问。

属性:Status表示现有服务的运行状态。取值包括:
ContinuePending 服务即将继续。
Paused 服务已暂停。
PausePending 服务即将暂停。
Running 服务正在运行。
StartPending 服务正在启动。
Stopped 服务未运行。
StopPending 服务正在停止。

下面的示例用于显示本机上的所有非设备驱动程序服务和设备程序服务,并完成MSSQLServer服务的启动与关闭:

复制代码
using  System.ServiceProcess;   // 需要添加引用
private   void  frm14ServiceController_Load( object  sender, EventArgs e)
        {
            
// 获取当前计算机上的所有非设备驱动程序服务
            
// 和不是驱动程序的服务
            dataGridView2.DataSource  =  ServiceController.GetServices();
            
// 获取当前计算机上的所有设备驱动程序服务
            dataGridView1.DataSource  =  ServiceController.GetDevices();

        }

        
// 服务开始
         private   void  btnStartSQL_Click( object  sender, EventArgs e)
        {
            
// 实例化一个服务控制器对象
            ServiceController scSQL  =   new  ServiceController();
            
// 指定服务所在的主机名称,默认为本机,所以可以不要设置
            scSQL.MachineName  =   " . " ;
            
// 指定服务名称
            scSQL.ServiceName  =   " MSSQLServer " ;
            
// 如果服务关闭了
             if  (scSQL.Status  ==  ServiceControllerStatus.Stopped)
            {
                
// 开启服务
                scSQL.Start();
                MessageBox.Show(scSQL.ServiceName
+ " 服务开启成功 " );
            }
            
else
            {
                MessageBox.Show(scSQL.ServiceName
+ " 服务没有停止 " );
            }
        }

        
// 服务停止
         private   void  btnEndSQL_Click( object  sender, EventArgs e)
        {
            
// 实例化一个服务控制器对象
            ServiceController scSQL  =   new  ServiceController();
            
// 指定服务名称
            scSQL.ServiceName  =   " MSSQLServer " ;
            
// 如果能关闭
             if  (scSQL.CanStop)
            {
                
// 如果服务开始了
                 if  (scSQL.Status  ==  ServiceControllerStatus.Running)
                {
                    
// 停止
                    scSQL.Stop();
                    MessageBox.Show(scSQL.ServiceName 
+   " 服务停止成功 " );
                }
                
else
                {
                    MessageBox.Show(scSQL.ServiceName 
+   " 服务没有运行 " );
                }
            }
            
else
            {
                MessageBox.Show(scSQL.ServiceName 
+   " 服务不能停止 " );
            }
        }
复制代码

此外服务类型主要分为:
Adapter 用于需要自己的驱动程序的硬件设备的服务。
FileSystemDriver 文件系统驱动程序,也是“内核”(Kernel) 设备驱动程序。
InteractiveProcess 可与桌面通信的服务。
KernelDriver “内核”(Kernel) 设备驱动程序,如硬盘或其他低级别硬件设备驱动程序。
RecognizerDriver 文件系统驱动程序,用于在启动时确定系统中存在的文件系统。
Win32OwnProcess Win32 程序,可由“服务控制器”启动,并遵守服务控制协议。此类 Win32 服务单独运行在一个进程中。 Win32ShareProcess Win32 服务,可与其他 Win32 服务共享进程。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值