ServiceController msg=new ServiceController();
msg.MachineName="your computer name";
msg.ServiceName="Messenger";……
msg.Start();  //启动msg.Stop();   //关闭

解决方案 »

  1.   

    从工具栏里拖一个ServiceController组件下来,设置好,然后
    serviceController1.Start();
    serviceController1.Stop();
      

  2.   

    如果上述二位的回答不满意,这里有较为完整的demo
    用Visual C#创建Windows服务程序  
    http://developer.ccidnet.com/pub/disp/Article?columnID=340&articleID=45618&pageNO=1hope it helps
      

  3.   

    多谢!正好在找C#谢windows service的咚咚。
      

  4.   

    to  PLMM007(树挪死,人挪活):
    要到注册表里改了:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
    下找到服务名字,start=2是自动,还有其它设置可以研究一下这几个注册字段.
      

  5.   

    plmm ?这用WMI很容易做到,我这几天忙没瞧见,一会帮你写一个
      

  6.   

    完成,程序如下,有问题发消息给偶:
    using System;
    using System.Management;namespace ArLi.CommonPrj {
    public class PLMM007_WMI { public static readonly System.Version myVersion = new System.Version(1,1); private ManagementBaseObject iObj = null;
    private ManagementBaseObject oObj = null;
    private ManagementClass mc = new ManagementClass("Win32_Service");
    private readonly ManagementObjectCollection moc; public PLMM007_WMI(){
    moc = mc.GetInstances();
    }

    /// <summary>
    /// 查询服务模式
    /// </summary>
    /// <param name="serviceName">要查询的服务,为null 表示返回所有已禁用服务</param>
    public string GetDisabled(string serviceName) {
    string s="";
    foreach(ManagementObject mo in moc) { if (serviceName != null) { //服务如果不为null
    if (((string)mo["Name"]).ToUpper() == serviceName.ToUpper()) {
    return (string)mo["StartMode"];
    }
    }

    if ((string) mo["StartMode"] == "Disabled") {
    s += mo["Name"].ToString() + "\r\n"; //自己改成想要的格式
    //你可以用displayname,上面的是ServiceName,下面这个是DisplayName
    //s += mo["DisplayName"].ToString() + "\r\n";
    };
    }
    return s;
    }
    /// <summary>
    /// 设置模式
    /// </summary>
    /// <param name="ServiceName">服务名</param>
    /// <param name="startMode">模式,比如:Boot/System/Automatic/Manual/Disabled</param>
    /// <returns>操作完成 1,否则 0</returns>
    public int ChangeTo(string serviceName, string startMode) {
    foreach(ManagementObject mo in moc) { //服务名存在
    if (((string)mo["Name"]).ToUpper() == serviceName.ToUpper()) {

    // 如果服务已经是指定模式则返回
    if ((string) mo["StartMode"] == startMode) return 0; // 设置服务模式
    iObj = mo.GetMethodParameters("ChangeStartMode");
    iObj["StartMode"] = startMode;
    oObj = mo.InvokeMethod("ChangeStartMode", iObj, null); return 1;
    }
    } return 0;
    }
    }
    }
      

  7.   

    用法示例:ArLi.CommonPrj.PLMM007_WMI o = new ArLi.CommonPrj.PLMM007_WMI();//比如剪贴板设置为自动启动
    o.ChangeTo("ClipSrv","Automatic");
      

  8.   

    谢谢 ArLi2003(阿利 正版 [上海有好工作叫我]) ,高人,解决,不过我想问一下远程启动一个服务怎么办?远程更改启动服务类型怎么实现?
      

  9.   

    c MSDN.microsofthttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmisdk/wmi/setting_authentication_in_wmi.aspor MSDN 2003ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/wmisdk/wmi/iwbemlocator_connectserver.htm
      

  10.   

    怕了你了using System;
    using System.Management;namespace ArLi.CommonPrj {
    public class Service_WMI { public static readonly System.Version myVersion = new System.Version(1,1); private ManagementBaseObject iObj = null;
    private ManagementBaseObject oObj = null;
    private ManagementClass mc = new ManagementClass(@"\\arli\Win32\Service");
    private readonly ManagementObjectCollection moc; public Service_WMI(){
    moc = mc.GetInstances();
    } /// <summary>
    /// 远程WMI 构造
    /// </summary>
    /// <param name="remoteComputerName">计算机名</param>
    /// <param name="userName">用户名,域用户可用 username@domain</param>
    /// <param name="passWord">密码</param>
    public Service_WMI(string remoteComputerName, string userName, string passWord) {
    moc = GetServiceCollection(remoteComputerName, userName, passWord);
    } private ManagementObjectCollection GetServiceCollection(string remoteComputerName, string userName, string passWord) {
    ManagementObjectCollection returnWMIcollection = null;
    ConnectionOptions co = new ConnectionOptions(); co.Username = userName;
    co.Password = passWord; System.Management.ManagementScope ms = new System.Management.ManagementScope("\\\\" + remoteComputerName + "\\root\\cimv2", co);       System.Management.ObjectQuery oq = new System.Management.ObjectQuery("SELECT * FROM Win32_Service");
    ManagementObjectSearcher query = new ManagementObjectSearcher(ms,oq); returnWMIcollection = query.Get(); return returnWMIcollection;
    }

    /// <summary>
    /// 查询服务模式
    /// </summary>
    /// <param name="serviceName">要查询的服务,为null 表示返回所有已禁用服务</param>
    public string GetStartMode(string serviceName) {
    string s="";
    foreach(ManagementObject mo in moc) {
    if (serviceName != null) { //服务如果不为null
    if (((string)mo["Name"]).ToUpper() == serviceName.ToUpper()) {
    return (string)mo["StartMode"];
    }
    }

    if ((string) mo["StartMode"] == "Disabled") {
    s += mo["Name"].ToString() + "\r\n"; //自己改成想要的格式
    //你可以用displayname,上面的是ServiceName,下面这个是DisplayName
    //s += mo["DisplayName"].ToString() + "\r\n";
    };
    }
    return s;
    }
    /// <summary>
    /// 设置模式
    /// </summary>
    /// <param name="ServiceName">服务名</param>
    /// <param name="startMode">模式,比如:Boot/System/Automatic/Manual/Disabled</param>
    /// <returns>操作完成 1,否则 0</returns>
    public int ChangeTo(string serviceName, string startMode) {
    foreach(ManagementObject mo in moc) { //服务名存在
    if (((string)mo["Name"]).ToUpper() == serviceName.ToUpper()) {

    // 如果服务已经是指定模式则返回
    if ((string) mo["StartMode"] == startMode) return 0; // 设置服务模式
    iObj = mo.GetMethodParameters("ChangeStartMode");
    iObj["StartMode"] = startMode;
    oObj = mo.InvokeMethod("ChangeStartMode", iObj, null); return 1;
    }
    } return 0;
    }
    }
    }