当前位置:编程学习 > C#/ASP.NET >>

C#windows service服务安装、注册、判断服务是否存在、是否启动

[csharp] 
#region Windows服务控制区  
 
#region 安装服务  
private void InstallService(IDictionary stateSaver, string filepath)  
{  
    try  
    {  
        ServiceController service = new ServiceController("ServiceName");  
        if (!ServiceIsExisted("ServiceName"))  
        {  
            //Install Service  
            AssemblyInstaller myAssemblyInstaller = new AssemblyInstaller();  
            myAssemblyInstaller.UseNewContext = true;  
            myAssemblyInstaller.Path = filepath;  
            myAssemblyInstaller.Install(stateSaver);  
            myAssemblyInstaller.Commit(stateSaver);  
            myAssemblyInstaller.Dispose();  
            //--Start Service  
            service.Start();  
        }  
        else  
        {  
            if (service.Status != System.ServiceProcess.ServiceControllerStatus.Running && service.Status != System.ServiceProcess.ServiceControllerStatus.StartPending)  
            {  
                service.Start();  
            }  
        }  
    }  
    catch (Exception ex)  
    {  
        MessageBox.Show("安装服务失败!");  
    }  
}  
#endregion  
 
#region 卸载windows服务  
private void UnInstallService(string filepath)  
{  
    try  
    {  
        if (ServiceIsExisted("ServiceName"))  
        {  
            //UnInstall Service  
            AssemblyInstaller myAssemblyInstaller = new AssemblyInstaller();  
            myAssemblyInstaller.UseNewContext = true;  
            myAssemblyInstaller.Path = filepath;  
            myAssemblyInstaller.Uninstall(null);  
            myAssemblyInstaller.Dispose();  
        }  
    }  
    catch (Exception ex)  
    {  
        MessageBox.Show("卸载服务失败!");  
    }  
}  
#endregion  
 
#region 判断window服务是否存在  
private bool ServiceIsExisted(string serviceName)  
{  
    ServiceController[] services = ServiceController.GetServices();  
    foreach (ServiceController s in services)  
    {  
        if (s.ServiceName == serviceName)  
        {  
            return true;  
        }  
    }  
    return false;  
}  
#endregion  
 
#region 判断window服务是否启动  
/// <summary>  
/// 判断某个Windows服务是否启动  
/// </summary>  
/// <returns></returns>  
public static bool IsServiceStart(string serviceName)  
{  
    ServiceController psc = new ServiceController(serviceName);  
    bool bStartStatus = false;  
    try  
    {  
        if (!psc.Status.Equals(ServiceControllerStatus.Stopped))  
        {  
            bStartStatus = true;  
        }  
  
        return bStartStatus;  
    }  
    catch (Exception ex)  
    {  
        throw new Exception(ex.Message);  
    }  
}  
#endregion  
 
#region 启动服务  
private bool StartService(string serviceName)  
{  
    bool flag = true;  
    if (ServiceIsExisted(serviceName))  
    {  
        System.ServiceProcess.ServiceController service = new System.ServiceProcess.ServiceController(serviceName);  
        if (service.Status != System.ServiceProcess.ServiceControllerStatus.Running && service.Status != System.ServiceProcess.ServiceControllerStatus.StartPending)  
        {  
            service.Start();  
            for (int i = 0; i < 60; i++)  
            {  
                service.Refresh();  
                System.Threading.Thread.Sleep(1000);  
                if (service.Status == System.ServiceProcess.ServiceControllerStatus.Running)  
                {  
                    break;  
                }  
                if (i == 59)  
                {  
                    flag = false;  
                }  
            }  
        }  
    }  
    return flag;  
}  
#endregion  
 
#region 停止服务  
private bool StopService(string serviceName)  
{  
    bool flag = true;  
    if (ServiceIsExisted(serviceName))  
    {  
     
补充:软件开发 , C# ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,