/// <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. 第五章 CSS美化网页元素

    一.span标签:能让某几个文字或者某个词语凸显出来 <p> 今天是11月份的<span>第一天</span>,地铁卡不打折了 </p> 二.字体风格 ...

  2. 接口实现后台GZIP压缩,pako.js 前端解压

    import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.IOException; ...

  3. Postgresql vacuum freeze相关参数

    先看3个参数:autovacuum_freeze_max_age           | 500000vacuum_freeze_min_age               | 10vacuum_fr ...

  4. springboot使用rabbitmq-Topic模式,亲自实测能用!!!

    0.项目目录截图 ===================================================================== springboot的版本: <gr ...

  5. epoll事件模型

    事件模型 EPOLL事件有两种模型: Edge Triggered (ET) 边缘触发只有数据到来才触发,不管缓存区中是否还有数据. Level Triggered (LT) 水平触发只要有数据都会触 ...

  6. VM 虚拟机 CentOS 7 设置 桥接网络

    桥接网络的设置:   安装时设置网络为桥接网络!   找到 ip 地址,设置如下   注意ip地址并不是一样的,用以区分   然后在关闭 windows 防火墙,打开 cmd 使用 ping 命令 O ...

  7. mysql 修改表结构以支持事务操作

    修改表的类型为 INNODB 的 SQL: alter table category_ ENGINE = innodb;     查看表的类型的 SQL show table status from ...

  8. Java中使用md5进行hash运算

    public class Md5Util { /** * @author Bean_bag * @description 进行Hash运算 * * @param input 参数字符串 * @retu ...

  9. 火狐调试工具-DevTools

    狐调试工具 - DevTools 咱们做写js 代码的时候,遇到的一个最大的问题就是调试问题,很多开发者在写 js 代码的时候,经常都非常痛苦.但是我们如果掌握好相应的调试工具,那么就可以比较游刃有余 ...

  10. Path.Combine Method

    https://docs.microsoft.com/en-us/dotnet/api/system.io.path.combine?view=netframework-4.8#System_IO_P ...