前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ServiceController操作Windows服务

ServiceController操作Windows服务

作者头像
张果
发布2022-05-09 19:37:45
5040
发布2022-05-09 19:37:45
举报
文章被收录于专栏:软件开发软件开发

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

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

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

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

代码语言:javascript
复制
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 服务共享进程。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2011-08-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档