C#操作windows服务,安装、卸载、停止、启动

  1    public class ServiceUtil
  2     {
  3         private string _ServiceName = string.Empty;
  4         private string _AppName = string.Empty;
  5
  6         public string AppName
  7         {
  8             get { return _AppName; }
  9             set { _AppName = value; }
 10         }
 11
 12         public string ServiceName
 13         {
 14             get { return _ServiceName; }
 15         }
 16
 17         /// <summary>
 18         ///
 19         /// </summary>
 20         /// <param name="appName">后缀名为.exe的文件</param>
 21         /// <param name="serviceName"></param>
 22         public ServiceUtil(string appName, string serviceName)
 23         {
 24             _AppName = appName;
 25             _ServiceName = serviceName;
 26         }
 27
 28         #region 启动服务
 29         /// <summary>
 30         /// StartService
 31         /// </summary>
 32         public void StartService()
 33         {
 34             ServiceController sc = new ServiceController(_ServiceName);
 35             if (sc.Status.Equals(ServiceControllerStatus.Stopped))
 36             {
 37                 sc.Start();
 38             }
 39         }
 40         #endregion
 41
 42         #region 停止服务
 43         /// <summary>
 44         /// 停止服务
 45         /// </summary>
 46         public void StopService()
 47         {
 48             ServiceController sc = new ServiceController(_ServiceName);
 49             if (!sc.Status.Equals(ServiceControllerStatus.Stopped))
 50             {
 51                 sc.Stop();
 52             }
 53         }
 54
 55         #endregion
 56
 57         #region 安装服务
 58         /// <summary>
 59         /// 安装服务
 60         /// </summary>
 61         public void InstallService()
 62         {
 63             if (!isServiceIsExisted(_ServiceName))
 64             {
 65                 string location = System.Reflection.Assembly.GetExecutingAssembly().Location;
 66                 string serviceFileName = location.Substring(0, location.LastIndexOf(‘\\‘) + 1) + string.Format("{0}.exe", _AppName);
 67                 InstallmyService(null, serviceFileName);
 68             }
 69         }
 70         #endregion
 71
 72         #region 卸载服务
 73         public void UnInstallService()
 74         {
 75             if (isServiceIsExisted(_ServiceName))
 76             {
 77                 string location = System.Reflection.Assembly.GetExecutingAssembly().Location;
 78                 string serviceFileName = location.Substring(0, location.LastIndexOf(‘\\‘) + 1) + string.Format("{0}.exe", _AppName);
 79                 UnInstallmyService(serviceFileName);
 80             }
 81         }
 82         #endregion
 83
 84         #region 检查服务存在的存在性
 85         /// <summary>
 86         /// 检查服务存在的存在性
 87         /// </summary>
 88         /// <param name=" NameService ">服务名</param>
 89         /// <returns>存在返回 true,否则返回 false;</returns>
 90         public static bool isServiceIsExisted(string NameService)
 91         {
 92             ServiceController[] services = ServiceController.GetServices();
 93             foreach (ServiceController s in services)
 94             {
 95                 if (s.ServiceName.ToLower() == NameService.ToLower())
 96                 {
 97                     return true;
 98                 }
 99             }
100             return false;
101         }
102         #endregion
103
104         #region Private
105         #region 安装Windows服务
106         /// <summary>
107         /// 安装Windows服务
108         /// </summary>
109         /// <param name="stateSaver">集合</param>
110         /// <param name="filepath">程序文件路径</param>
111         private void InstallmyService(IDictionary stateSaver, string filepath)
112         {
113
114             AssemblyInstaller AssemblyInstaller1 = new AssemblyInstaller();
115
116             AssemblyInstaller1.UseNewContext = true;
117
118             AssemblyInstaller1.Path = filepath;
119
120             AssemblyInstaller1.Install(stateSaver);
121
122             AssemblyInstaller1.Commit(stateSaver);
123
124             AssemblyInstaller1.Dispose();
125
126         }
127         #endregion
128
129         #region 卸载Windows服务
130         /// <summary>
131         /// 卸载Windows服务
132         /// </summary>
133         /// <param name="filepath">程序文件路径</param>
134         private void UnInstallmyService(string filepath)
135         {
136             AssemblyInstaller AssemblyInstaller1 = new AssemblyInstaller();
137
138             AssemblyInstaller1.UseNewContext = true;
139
140             AssemblyInstaller1.Path = filepath;
141
142             AssemblyInstaller1.Uninstall(null);
143
144             AssemblyInstaller1.Dispose();
145
146         }
147         #endregion
148         #endregion
149
150     }

测试环境:win8+vs2012+.net4.0

时间: 2024-10-21 13:17:20

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

2.Windows服务--&gt;安装卸载服务

1.使用vs组件“VS2012开发人员命令提示” 工具,进行安装卸载服务(必须以“管理员身份运行") 安装和卸载的时候选择合适的安装程序工具地址,例如: 安装服务:C:\Windows\Microsoft.NET\Framework\v4.0.30319\installutil.exe 服务路径 卸载服务:C:\Windows\Microsoft.NET\Framework\v4.0.30319\installutil.exe /u 服务路径 例如: C:\Windows\Microsoft.N

C#版Windows服务安装卸载小工具-附源码

前言 在我们的工作中,经常遇到Windows服务的安装和卸载,在之前公司也普写过一个WinForm程序选择安装路径,这次再来个小巧灵活的控制台程序,不用再选择,只需放到需要安装服务的目录中运行就可以实现安装或卸载. 开发思路 1.由于系统的权限限制,在运行程序时需要以管理员身份运行 2.因为需要实现安装和卸载两个功能,在程序运行时提示本次操作是安装还是卸载  需要输入 1 或 2 3.接下来程序会查找当前目录中的可执行文件并过滤程序本身和有时我们复制进来的带有vhost的文件,并列出列表让操作者

windows服务安装卸载

@echo off set filename=E:\WinService\bin\Debug\CiWong.Account.Client.WinService.exe set servicename=AccountService //服务名 pause echo ============================操作日志==================================== >InstallService.log if exist "%SystemRoot%\Mic

windows服务 安装 卸载

软件编译时,也需要以管理员身份运行VS以管理员身份运行 cmd(命令行) cd C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319 安装服务 :InstallUtil "D:\work\SVN\CallReport\WindowsServiceCallReport\WindowsServiceCallReport\bin\Debug\WindowsServiceCallReport.exe" 卸载服务 :InstallUtil /u "

windows服务安装后立即启动

置serviceProcessInstaller1控件的Account属性为"LocalSystem" 设置serviceInstaller1控件的StartType属性为"Automatic" 在private void ProjectInstaller_AfterInstall(object sender, InstallEventArgs e)事件中,添加以下代码: Process p = new Process(); p.StartInfo.FileName

C#编写的windows服务安装后启动提示“服务启动后又停止了”

使用C#编写的windows服务安装到服务器上行后进行启动时,总是提示“服务启动后又停止了”. 检查了服务逻辑是没问题,安装在开发本地也是正常,网上查了资料说是可能是服务没有注册,我检查了服务是正常注册,相对应的方法试很多了,但是都没有解决.后来无意中看了一个帖子说可以在windows的本地服务日志里边看报错信息.看到这个,我的问题就有办法处理了,查了一下保存信息,提示找不到“E:\\”,看到这里我就明白是怎么回事了,我的开发机有E盘,服务器上没有E盘,而我的日志文件默认写在E盘,所以服务启动后

windows服务安装及卸载

1)安装脚本Install.bat%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe JobSchedule.exeNet Start ServiceOAsc config ServiceOA start= auto 2)卸载脚本Uninstall.bat%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe /u JobSchedule.exe w

Windows服务安装与控制

Windows服务安装与控制 1.建立服务 (1)定义一个ServiceInstaller using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace WindowService { [System.ComponentModel.RunInstaller(true)] public class ServiceInstaller : System.Configurat

windows 服务安装脚本拾遗

转自:http://blog.csdn.net/susubuhui/article/details/7881096 1.安装脚本 echo 请按任意键开始安装客户管理平台的后台服务 echo. pause echo. echo 清理原有服 务项 %SystemRoot%\Microsoft.NET\Framework\v2.0.50727\installutil.exe /U WS_LiDeBaoDataServerV1.0.exe > InstallService.log echo. echo

使用PowerShell操作Windows服务的命令小结

PowerShell在处理Windows服务方面,提供了强大的功能,很多方便.强大的cmdlet等着你去发掘. Get-Service,别名gsv,获取服务对象. 举例:gsv eventlog 或 $evtlog = gsv eventlog Start-Service,启动服务. Stop-Service,停止服务. Restart-Service,重启服务. Suspend-Service,挂起/暂停服务. Resume-Service,继续服务. Set-Service,设置服务的属性.