c#中对系统服务的操作

 在对系统服务进行操作时,若使用ServiceController sc = new ServiceController("SQL Server (MSSQLSERVER)");这样的方法

来获取服务对应的ServiceController,会出现一些问题:当系统中没有名为SQL Server (MSSQLSERVER)的服务时,sc不会返回

null,而是会返回一个ServiceController,但返回的这个ServiceController中的属性均无法访问,一访问就会抛出异常。

可以用下面的方法来通过名称获取系统中的某个服务:


            ServiceController[] serviceList = ServiceController.GetServices();      //获取当前系统所有服务的列表
            ServiceController myService = null;
            foreach (ServiceController forLoop in serviceList)
            {
                if (forLoop.DisplayName == "SQL Server (MSSQLSERVER)")                       //循环直到找到了所需

要的服务
                {
                    myService = forLoop;
                    break;
                }
            }
            if (myService == null)                                                  //若未找到所需要的服务,则报错

跳出
            {
                MessageBox.Show("没有找到名为 SQL Server (MSSQLSERVER) 的服务");
                return;
            }
            myService.Stop();                                                       //停止服务
            //等待直到该服务被停止或30秒后,注意30秒后没有停止会抛出异常
            myService.WaitForStatus(ServiceControllerStatus.Stopped,new TimeSpan(0,0,30));
            myService.Start();                                                      //启动服务
            //等待直到该服务启动完成,然后再执行其它的代码,以防止出错
            myService.WaitForStatus(ServiceControllerStatus.Running,new TimeSpan(0,0,30));     

你可能感兴趣的:(sql,server,C#,null)