[C#] - 打开关闭系统服务

来源:http://hi.baidu.com/%B0%D9%CD%F5%C5%F3%B6%C8/blog/item/221c015acf754e8d810a1813.html

 

本例测试的是Telnet服务

 
  
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;

// 引用System.ServiceProcess.dll
using System.ServiceProcess;


namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click( object sender, EventArgs e)
{
// Toggle the Telnet service:
// If it is started (running, paused, etc), stop the service.
// If it is stopped, start the service.
ServiceController sc = new ServiceController( " Telnet " );
Console.WriteLine(
" The Telnet service status is currently set to {0} " , sc.Status.ToString());

if ((sc.Status.Equals(ServiceControllerStatus.Stopped)) || (sc.Status.Equals(ServiceControllerStatus.StopPending)))
{
// Start the service if the current status is stopped.
Console.WriteLine( " Starting the Telnet service... " );
sc.Start();
}
else
{
// Stop the service if its status is not set to "Stopped ".
Console.WriteLine( " Stopping the Telnet service... " );
sc.Stop();
}

// Refresh and display the current service status.
sc.Refresh();
Console.WriteLine(
" The Telnet service status is now set to {0}. " , sc.Status.ToString());
}
}
}

 

 

*********************************************************************************************************************

来源:http://book.csdn.net/bookfiles/16/100165809.shtml

2010041915114583.jpg

  • 书名:C#高级编程(第3版)
  • 作者:(美)罗宾逊 & 内格尔 著,李敏波 译
  • 来源:清华大学出版社
  • ISBN:7-302-10199-X
  • 定价:128元

本例测试对象是所有系统服务

2010041915222126.jpg

 

 
  
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;

// 引用System.ServiceProcess.dll
using System.ServiceProcess;


namespace WindowsFormsApplication1
{
public partial class ServiceControlForm : Form
{
private System.ServiceProcess.ServiceController[] services;

public ServiceControlForm()
{
//
// Required for Windows Form Designer support
//
InitializeComponent();
RefreshServiceList();
}

protected void RefreshServiceList()
{
services
= ServiceController.GetServices();
listBoxServices.DisplayMember
= " DisplayName " ;
listBoxServices.DataSource
= services;
}

protected string GetServiceTypeName(ServiceType type)
{
string serviceType = "" ;
if ((type & ServiceType.InteractiveProcess) != 0 )
{
serviceType
= " Interactive " ;
type
-= ServiceType.InteractiveProcess;
}

switch (type)
{
case ServiceType.Adapter:
serviceType
+= " Adapter " ;
break ;

case ServiceType.FileSystemDriver:
case ServiceType.KernelDriver:
case ServiceType.RecognizerDriver:
serviceType
+= " Driver " ;
break ;

case ServiceType.Win32OwnProcess:
serviceType
+= " Win32 Service Process " ;
break ;

case ServiceType.Win32ShareProcess:
serviceType
+= " Win32 Shared Process " ;
break ;

default :
serviceType
+= " unknown type " + type.ToString();
break ;
}
return serviceType;
}

protected void SetServiceStatus(ServiceController controller)
{
buttonStart.Enabled
= true ;
buttonStop.Enabled
= true ;
buttonPause.Enabled
= true ;
buttonContinue.Enabled
= true ;

if ( ! controller.CanPauseAndContinue)
{
buttonPause.Enabled
= false ;
buttonContinue.Enabled
= false ;
}

if ( ! controller.CanStop)
{
buttonStop.Enabled
= false ;
}

ServiceControllerStatus status
= controller.Status;
switch (status)
{
case ServiceControllerStatus.ContinuePending:
textBoxServiceStatus.Text
= " Continue Pending " ;
buttonContinue.Enabled
= false ;
break ;

case ServiceControllerStatus.Paused:
textBoxServiceStatus.Text
= " Paused " ;
buttonPause.Enabled
= false ;
buttonStart.Enabled
= false ;
break ;

case ServiceControllerStatus.PausePending:
textBoxServiceStatus.Text
= " Pause Pending " ;
buttonPause.Enabled
= false ;
buttonStart.Enabled
= false ;
break ;

case ServiceControllerStatus.StartPending:
textBoxServiceStatus.Text
= " Start Pending " ;
buttonStart.Enabled
= false ;
break ;

case ServiceControllerStatus.Running:
textBoxServiceStatus.Text
= " Running " ;
buttonStart.Enabled
= false ;
buttonContinue.Enabled
= false ;
break ;

case ServiceControllerStatus.Stopped:
textBoxServiceStatus.Text
= " Stopped " ;
buttonStop.Enabled
= false ;
break ;

case ServiceControllerStatus.StopPending:
textBoxServiceStatus.Text
= " Stop Pending " ;
buttonStop.Enabled
= false ;
break ;

default :
textBoxServiceStatus.Text
= " Unknown status " ;
break ;
}
}


// listBoxServices的SelectedIndexChanged事件
protected void OnSelectedIndexChanged( object sender, System.EventArgs e)
{
ServiceController controller
= (ServiceController)listBoxServices.SelectedItem;
textBoxDisplayName.Text
= controller.DisplayName;
textBoxServiceType.Text
= GetServiceTypeName(controller.ServiceType);
textBoxServiceName.Text
= controller.ServiceName;
SetServiceStatus(controller);
}

// buttonStart,buttonStop,buttonPause,buttonContinue的Click事件
protected void buttonCommand_Click( object sender, System.EventArgs e)
{
Cursor.Current
= Cursors.WaitCursor;
ServiceController controller
= (ServiceController)listBoxServices.SelectedItem;

if (sender == this .buttonStart)
{
controller.Start();
controller.WaitForStatus(ServiceControllerStatus.Running);
}
else if (sender == this .buttonStop)
{
controller.Stop();
controller.WaitForStatus(ServiceControllerStatus.Stopped);
}
else if (sender == this .buttonPause)
{
controller.Pause();
controller.WaitForStatus(ServiceControllerStatus.Paused);
}
else if (sender == this .buttonContinue)
{
controller.Continue();
controller.WaitForStatus(ServiceControllerStatus.Running);
}

int index = listBoxServices.SelectedIndex;
RefreshServiceList();
listBoxServices.SelectedIndex
= index;
Cursor.Current
= Cursors.Default;
}

// buttonRefresh的Click事件
protected void buttonRefresh_Click( object sender, System.EventArgs e)
{
RefreshServiceList();
}

// buttonExit的Click事件
protected void buttonExit_Click( object sender, System.EventArgs e)
{
Application.Exit();
}
}
}

 

 

 

 

 

转载于:https://www.cnblogs.com/hcbin/archive/2010/04/19/1715384.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值