c#怎么启动和停止windows服务
怎么用c#启动一个windows服务,比如说alerter, Server之类的
谢谢!
------解决方案--------------------调用CMD命令,Net /stop Net /start
------解决方案--------------------类似这样的(下面是实现Ping的一个类,得到它的Ping time):
//*********************************************************************************************************
//
// Revision log:
// Date Initials Description
// 2007/02/12 joe.guo Ping command
//
// Copyright (c) 2006 Flex-Logic Limited. All Rights Reserved.
//*********************************************************************************************************
using System;
using System.Diagnostics;
namespace FLogic.Workflow.Utility.SystemMonitor {
/// <summary>
/// Ping object
/// </summary>
public class PingObject {
/// <summary>
/// Ping command
/// </summary>
/// <param name= "strIp "> a Ip address or domain name, (like: "127.0.0.1 " or "www.sohu.com " and computer name </param>
/// <returns> pingtime or other status info. </returns>
public static string CmdPing(string strIp) {
try {
Process p = new Process();
// call cmd.exe
p.StartInfo.FileName = "cmd.exe ";
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardError = true;
// not display window
p.StartInfo.CreateNoWindow = true;
p.Start();
p.StandardInput.WriteLine ( "ping -n 1 "+strIp);
p.StandardInput.WriteLine( "exit ");
string strRst = p.StandardOutput.ReadToEnd();
string pingrst;
int averageLocation = strRst.IndexOf( "Average = ");
// get ping time
if(averageLocation !=-1) {
int endLocation = strRst.IndexOf( '\r ',averageLocation);
pingrst = strRst.Substring(averageLocation + 10,endLocation - averageLocation - 10);
// timeout
} else if(strRst.IndexOf( "(100% loss) ")!=-1) {
pingrst = "Timeout ";
// Destination host unreachable
} else if( strRst.IndexOf( "Destination host unreachable. ")!=-1) {
pingrst = "Destination host unreachable ";
// Unknown host
} else if(strRst.IndexOf( "Unknown host ")!=-1) {
pingrst = "Unknown host ";
// others
} else {
pingrst = strRst;
}
p.Close();
return pingrst;
} catch (Exception ex) {
throw(new Exception( "Ping " + strIp + " occur error ",ex));
}
}
}
}
------解决方案--------------------下面的示例使用 ServiceController 类检查 Telnet 服务的当前状态。如果该服务已停止,此示例将启动该服务。如果该服务正在运行,此示例将停止该服务。
// 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)))