主要宗旨:不已命令形式操作windows服务

      static void Main(string[] args)
{
var path = @"E:\开发辅助项目\WCF\WCF.Test\WCF.Test\bin\Debug\WCF.Test.exe";
var serviceName = "WCF_TestService";
HandleService hs = new HandleService();
//启动服务
hs.StartService(serviceName);
//停止服务
hs.StopService(serviceName);
//卸载服务
hs.DeleteService(path);
//安装服务
hs.InstallService(path);
Console.ReadKey();
}

操作类

 public class HandleService
{ /// <summary>
/// 获取服务
/// </summary>
/// <param name="serviceName">服务名</param>
/// <returns></returns>
public ServiceController GetService(string serviceName)
{
try
{
//可以获取所有的服务
//ServiceController[] service = ServiceController.GetServices(); //无法打开计算上的服务控制管理器。
//ServiceController[] service = ServiceController.GetServices(serviceName);
//if (service.Length <= 0) return null; ServiceController service = new ServiceController(serviceName);
return service;
}
catch (Exception ex)
{
return null;
}
} /// <summary>
/// 安装服务
/// </summary>
/// <param name="path">路径</param>
public void InstallService(string path)
{
try
{
AssemblyInstaller myAssemblyInstaller = new AssemblyInstaller();
myAssemblyInstaller.UseNewContext = true;
myAssemblyInstaller.Path = path;
myAssemblyInstaller.Install(null);
myAssemblyInstaller.Commit(null);
myAssemblyInstaller.Dispose(); }
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
Console.Read();
} /// <summary>
/// 启动服务
/// </summary>
/// <param name="serviceName">服务名</param>
public void StartService(string serviceName)
{
try
{
var service = GetService(serviceName);
if (service == null)
{
Console.Write($"windows上不存在{serviceName}服务!");
return;
}
if (service.Status == ServiceControllerStatus.Paused ||
service.Status == ServiceControllerStatus.Stopped)
{
service.Start();
service.WaitForStatus(ServiceControllerStatus.Running, new TimeSpan(, , ));
}
Console.WriteLine($"{serviceName}已经启动");
}
catch (Exception)
{ throw;
}
} /// <summary>
/// 停止服务
/// </summary>
/// <param name="serviceName">服务名</param>
public void StopService(string serviceName)
{
try
{
var service = GetService(serviceName);
if (service == null)
{
Console.Write($"windows上不存在{serviceName}服务!");
return;
}
if (service.Status == ServiceControllerStatus.Running ||
service.Status == ServiceControllerStatus.PausePending || service.Status == ServiceControllerStatus.StartPending)
{
service.Stop();
service.WaitForStatus(ServiceControllerStatus.Stopped, new TimeSpan(, , ));
}
Console.WriteLine($"{serviceName}已经停止");
}
catch (Exception)
{ throw;
}
} /// <summary>
/// 卸载服务
/// </summary>
/// <param name="path"></param>
public void DeleteService(string path)
{
try
{
AssemblyInstaller myAssemblyInstaller = new AssemblyInstaller();
myAssemblyInstaller.UseNewContext = true;
myAssemblyInstaller.Path = path;
myAssemblyInstaller.Uninstall(null);
myAssemblyInstaller.Dispose();
Console.WriteLine("卸载服务成功!");
}
catch (Exception ex)
{
Console.WriteLine("卸载服务失败");
} } }

C# 操作windows服务[启动、停止、卸载、安装]的更多相关文章

  1. C#通过SC命令和静态公共类来操作Windows服务

    调用的Windows服务应用程序网址:http://www.cnblogs.com/pingming/p/5115304.html 一.引用 二.公共静态类:可以单独放到类库里 using Syste ...

  2. c# 通过Windows服务启动外部程序

    1. 新建一个Windows服务应用程序 创建项目——>Visual C# 左侧的"+"——>Windows ——>Windows 服务(右侧模板)——>输 ...

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

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

  4. MongoDB做为一项windows服务启动

    MongoDB做为一项windows服务启动 Windows版本安装 MongoDB的官方下载站是http://www.mongodb.org/downloads,可以去上面下载最新的对应版本,有32 ...

  5. 玩转Windows服务系列——Windows服务启动超时时间

    最近有客户反映,机房出现断电情况,服务器的系统重新启动后,数据库服务自启动失败.第一次遇到这种情况,为了查看是不是断电情况导致数据库文件损坏,从客户的服务器拿到数据库的日志,进行分析. 数据库工作机制 ...

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

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

  7. 玩转Windows服务系列——无COM接口Windows服务启动失败原因及解决方案

    将VS创建的Windows服务项目编译生成的程序,通过命令行 “服务.exe -Service”注册为Windows服务后,就可以通过服务管理器进行管理了. 问题 通过服务管理器进行启动的时候,发现服 ...

  8. Linux Oracle服务启动&停止脚本与开机自启动

    在CentOS 6.3下安装完Oracle 10g R2,重开机之后,你会发现Oracle没有自行启动,这是正常的,因为在Linux下安装Oracle的确不会自行启动,必须要自行设定相关参数,首先先介 ...

  9. Linux Oracle服务启动&停止脚本与开机自启动[转]

    在CentOS 6.3下安装完Oracle 10g R2,重开机之后,你会发现Oracle没有自行启动,这是正常的,因为在Linux下安装Oracle的确不会自行启动,必须要自行设定相关参数,首先先介 ...

随机推荐

  1. pyinstaller 打包exe可执行文件

    Python打包EXE方法之一 一.安装Pyinstaller 1.安装pywin32 下载安装文件:查找到跟自己适用的python版本及window系统版本匹配的pywin32,下载后安装 使用pi ...

  2. TreeGrid 控件集 :delphi 学习群 ---- 166637277 (Delphi学习交流与分享)

    delphi 学习群: 166637277  (Delphi学习交流与分享). 群主QQ: 1936431438 TreeGrid 控件集 收集: 1.https://www.lmd.de/produ ...

  3. 组合权限查询 SQL,UniGUI

    组合权限查询 SQL,UniGUI: name ,View, New, Edit, Dele      表 获取 name 的 授权. 项目         1       0       0    ...

  4. Datasnap 服务端 (Server)Session 管理 --- 解决 全示例慢(Google)

    Datasnap 服务端 (Server)Session  管理:  http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Server_Side_Ses ...

  5. /etc/shadow中密码段的生成方式

    why? 为什么要手动生成? 通常情况下,使用passwd命令即可以为用户设置密码,但是在某些情况下是需要先获得加密后的密码然后去操作的,比如,kickstart文件中的rootpw指令,ansibl ...

  6. svn:Item ‘XXXXXX’ is out of date

    问题描述:     工作副本没有更新到最新版本 svn: 提交失败(细节如下): svn: 目录 "D:\develop\workspace\gxcjx\src\main\resources ...

  7. Tomcat服务的安装及配置

    在进行Java Web开发时必须有Web服务器的支持,常用的Web服务器便是Tomcat,本文主要介绍Tomcat的安装和配置.客户端通过Web浏览器发送一个基于HTTP协议的请求到服务器上后,服务器 ...

  8. [MySQL]InnoDB引擎的行锁和表锁

    1.行锁和表锁 在mysql 的 InnoDB引擎支持行锁,与Oracle不同,mysql的行锁是通过索引加载的,即是行锁是加在索引响应的行上的,要是对应的SQL语句没有走索引,则会全表扫描, 行锁则 ...

  9. MYSQL连不上

    如果你想连接你的MySQL的时候发生这个错误: ERROR 1130: Host '192.168.1.3' is not allowed to connect to this MySQL serve ...

  10. Python-Django-Ajax进阶

    ajax上传文件: <h2>基于ajax上传文件</h2><p>名字 <input type="text" id="filena ...