[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
- 书名:C#高级编程(第3版)
- 作者:(美)罗宾逊 & 内格尔 著,李敏波 译
- 来源:清华大学出版社
- ISBN:7-302-10199-X
- 定价:128元
本例测试对象是所有系统服务
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();
}
}
}
个性签名:做要做好,做到不三不四不如不做。