/// <summary>
/// 打开系统服务
/// </summary>
/// <param name="serviceName">系统服务名称</param>
/// <returns></returns>
public static Tuple<bool, string> Open(string serviceName)
{
try
{
using (ServiceController control = new ServiceController(serviceName))
{
if (control.Status != ServiceControllerStatus.Running)
{
control.Start();
}
}
return new Tuple<bool, string>(true, "成功");
}
catch (Exception e)
{
return new Tuple<bool, string>(false, e.Message);
}
} /// <summary>
/// 关闭系统服务
/// </summary>
/// <param name="serviceName">系统服务名称</param>
/// <returns></returns>
public static Tuple<bool, string> Close(string serviceName)
{
try
{
using (ServiceController control = new ServiceController(serviceName))
{ if (control.Status == ServiceControllerStatus.Running)
{
control.Stop();
}
}
return new Tuple<bool, string>(true, "成功");
}
catch (Exception e)
{
return new Tuple<bool, string>(false, e.Message);
}
} /// <summary>
/// 重启系统服务
/// </summary>
/// <param name="serviceName">系统服务名称</param>
/// <returns></returns>
public static Tuple<bool, string> ReStart(string serviceName)
{
try
{
using (ServiceController control = new ServiceController(serviceName))
{
if (control.Status == ServiceControllerStatus.Running)
{
control.Continue();
}
}
return new Tuple<bool, string>(true, "成功");
}
catch (Exception e)
{
return new Tuple<bool, string>(false, e.Message);
}
} /// <summary>
/// 返回服务状态
/// </summary>
/// <param name="serviceName">系统服务名称</param>
/// <returns>1:服务未运行 2:服务正在启动 3:服务正在停止 4:服务正在运行 5:服务即将继续 6:服务即将暂停 7:服务已暂停 0:未知状态</returns>
public static int GetSystemServiceStatus(string serviceName)
{
try
{
using (ServiceController control = new ServiceController(serviceName))
{
return (int)control.Status;
}
}
catch
{
return ;
}
} /// <summary>
/// 返回服务状态
/// </summary>
/// <param name="serviceName">系统服务名称</param>
/// <returns>1:服务未运行 2:服务正在启动 3:服务正在停止 4:服务正在运行 5:服务即将继续 6:服务即将暂停 7:服务已暂停 0:未知状态</returns>
public static string GetSystemServiceStatusString(string serviceName)
{
try
{
using (ServiceController control = new ServiceController(serviceName))
{
var status = string.Empty;
switch ((int)control.Status)
{
case :
status = "服务未运行";
break;
case :
status = "服务正在启动";
break;
case :
status = "服务正在停止";
break;
case :
status = "服务正在运行";
break;
case :
status = "服务即将继续";
break;
case :
status = "服务即将暂停";
break;
case :
status = "服务已暂停";
break;
case :
status = "未知状态";
break;
}
return status;
}
}
catch
{
return "未知状态";
}
} /// <summary>
/// 安装服务
/// </summary>
/// <param name="stateSaver"></param>
/// <param name="filepath"></param>
public static void Install(IDictionary stateSaver, string filepath)
{
try
{
AssemblyInstaller myAssemblyInstaller = new AssemblyInstaller
{
UseNewContext = true,
Path = filepath
};
myAssemblyInstaller.Install(stateSaver);
myAssemblyInstaller.Commit(stateSaver);
myAssemblyInstaller.Dispose();
}
catch (Exception ex)
{
throw new Exception("installServiceError/n" + ex.Message);
}
} /// <summary>
/// 判断服务是否存在
/// </summary>
/// <param name="serviceName"></param>
/// <returns></returns>
public static bool Existed(string serviceName)
{
ServiceController[] services = ServiceController.GetServices();
return services.Any(s => s.ServiceName == serviceName);
} /// <summary>
/// 卸载服务
/// </summary>
/// <param name="filepath">路径和文件名</param>
public static void UnInstall(string filepath)
{
try
{
AssemblyInstaller myAssemblyInstaller = new AssemblyInstaller
{
UseNewContext = true,
Path = filepath
};
myAssemblyInstaller.Uninstall(null);
myAssemblyInstaller.Dispose();
}
catch (Exception ex)
{
throw new Exception("unInstallServiceError/n" + ex.Message);
}
}

Windows服务操作帮助类的更多相关文章

  1. Windows服务操作之sc和net命令及windows任务计划

    看个粟子: 1.“新建项目”——“Window服务” 生成的目录结构 双击“MainService.cs”,右键点击“添加安装程序”,自动会生成Projectinstaller.cs文件以及两个安装组 ...

  2. Windows服务操作

    资料 https://docs.microsoft.com/zh-cn/dotnet/api/system.serviceprocess.servicecontroller?redirectedfro ...

  3. C#.NET 操作Windows服务承载WCF

    Windows服务的制作.安装可以参考这篇: C#.NET 操作Windows服务(安装.卸载) - runliuv - 博客园 (cnblogs.com) 本篇会在这个解决方案基础上,继续修改. 一 ...

  4. C#.NET 操作Windows服务(安装、卸载)

    注意点: 1.安装时要请求到管理员权限. 2.卸载前,一定要停止掉Windows服务,否则需要重启或注销电脑.代码无法停止服务时,使用services.msc来停止. 开始: 1.新建一个名为&quo ...

  5. SC命令---安装、开启、配置、关闭 cmd命令行和bat批处理操作windows服务

      一.cmd命令行---进行Windows服务操作 1.安装服务 sc create 服务名 binPath= "C:\Users\Administrator\Desktop\win32s ...

  6. cmd命令行和bat批处理操作windows服务(转载)

    一.cmd命令行---进行Windows服务操作 1.安装服务 sc create 服务名 binPath= "C:\Users\Administrator\Desktop\win32srv ...

  7. 使用Visual Studio 2015 Community 开发windows服务

    昨天研究在.NET下开发Windows服务程序,期间遇到一些小问题,这里仅将自己的开发过程和需要注意的地方写下和广大网友分享……  1.基础   Windows服务是指系统启动时能够自己运行的程序.W ...

  8. C# 6 与 .NET Core 1.0 高级编程 - 39 章 Windows 服务(上)

    译文,个人原创,转载请注明出处(C# 6 与 .NET Core 1.0 高级编程 - 39 章 Windows 服务(上)),不对的地方欢迎指出与交流. 章节出自<Professional C ...

  9. C# 6 与 .NET Core 1.0 高级编程 - 39 章 Windows 服务(下)

    译文,个人原创,转载请注明出处(C# 6 与 .NET Core 1.0 高级编程 - 39 章 Windows 服务(下)),不对的地方欢迎指出与交流. 章节出自<Professional C ...

随机推荐

  1. CefSharp支持flash

    https://www.cnblogs.com/yaosj/p/10811687.html

  2. URL中的String参数问题

    测试一个查询数据的接口,类似这样的URL:.../search?type=Astring,在浏览器中输入URL获取到的数据为空,但通过其它方式确认数据库中确实已有数据,怀疑是接口实现问题.找接口实现的 ...

  3. 解决chrome浏览器自动填充密码

    chrome会自动填充密码,解决方法很简单 使用下面的参考代码即可: <input type="password" readonly οnfοcus="this.r ...

  4. 06_去除不需要的字段以及ELK时间轴问题

    去除字段只能去除_source中的,不是_source内的无法去除. 去除不必要的字段,不仅可以节省ES的存储内容,同时因为节省了ES的内容,可以加速搜索的速度 Logstash配置去除不需要的字段 ...

  5. linux下安装python3.6.6

    1.到python的官网去下载python3.6.3安装包,必须是Linux版本的 2.在/usr/tmp下下载python安装包 wget https://www.python.org/ftp/py ...

  6. [linux]ubuntu修改镜像源

    sudo apt-get update 更新源 sudo apt-get install package 安装包 sudo apt-get remove package 删除包 sudo apt-ca ...

  7. meshing-八分之一圆球

    ​原视频下载地址:https://yunpan.cn/cqwiFDCg6PbFj  访问密码 d1c8

  8. 安装virtual box

    将安装包放在app目录下: 进入安装目录,输入sudo gdebi 安装包名 安装完后,可以在搜索框中搜索:virtual 会出现安装好的虚拟机盒子.

  9. Centos-7修改yum源(阿里yum源)

    国外地址yum源下载慢,下到一半就断了,就这个原因就修改它为国内yum源地址 国内yum源: 阿里centos7 yum源:http://mirrors.aliyun.com/repo/Centos- ...

  10. 走进JavaWeb技术世界10:从JavaBean讲到Spring

    Java 帝国之Java bean (上) 转自: 刘欣 码农翻身 2016-05-27 前言: 最近看到到spring 的bean 配置, 突然想到可能很多人不一定知道这个叫bean的东西的来龙去脉 ...