vs.net c# 安装、注册windows service服务,判断服务是否存在,是否启动

摘要:
=系统。服务流程。ServiceControllerStatus。StartPending){service.Start();}}catch{thrownewException;}II卸载windows服务:privateevoidUnInstallService{try{if{//UnInstallServiceAssemblyInstallermyAssemblyInstaller=newAssemblyInstaller();myAssemblyInstaller.UseNewContext=true;myAssemblyInstaller。Path=文件路径;myAssemblyInstaller.Uninstall;myAssemblyInstaller.Dispose()窗口服务存在:privatetoolServiceIsExisted{ServiceController[]services=ServiceController.GetService();foreach{if{returntrue;}}returnfalse;}4、 启动服务:privateevoidStartService{if{System.ServiceProcess.ServiceControllerservice=newSystem.ServiceProcessServiceController;if(service.Status!

vs.net c# 安装、注册windows service服务,判断服务是否存在,是否启动

一、安装服务:
private void InstallService(IDictionary stateSaver, string filepath)
        {
            try
            {
                System.ServiceProcess.ServiceController service = new System.ServiceProcess.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)
            {
                throw new Exception("installServiceError\n" + ex.Message);
            }
        }

二、卸载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)
            {
                throw new Exception("unInstallServiceError\n" + ex.Message);
            }
        }

三、判断window服务是否存在:
        private bool ServiceIsExisted(string serviceName)
        {
            ServiceController[] services = ServiceController.GetServices();
            foreach (ServiceController s in services)
            {
                if (s.ServiceName == serviceName)
                {
                    return true;
                }
            }
            return false;
        }

四、启动服务:
private void StartService(string serviceName)
        {
            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)
                        {
                            throw new Exception(startServiceError.Replace("$s$", serviceName));
                        }
                    }
                }
            }
        }

五、停止服务:
        private void StopService(string serviceName)
        {
            if (ServiceIsExisted(serviceName))
            {
                System.ServiceProcess.ServiceController service = new System.ServiceProcess.ServiceController(serviceName);
                if (service.Status == System.ServiceProcess.ServiceControllerStatus.Running)
                {
                    service.Stop();
                    for (int i = 0; i < 60; i++)
                    {
                        service.Refresh();
                        System.Threading.Thread.Sleep(1000);
                        if (service.Status == System.ServiceProcess.ServiceControllerStatus.Stopped)
                        {
                            break;
                        }
                        if (i == 59)
                        {
                            throw new Exception(stopServiceError.Replace("$s$", serviceName));
                        }
                    }
                }
            }
        }


注:手动安装window服务的方法:

在“Visual Studio 2005 命令提示”窗口中,运行:
安装服务:installutil servicepath
卸除服务:installutil /u servicepath

 

come from http://www.cnblogs.com/hesen/archive/2009/03/13/1411129.html

免责声明:文章转载自《vs.net c# 安装、注册windows service服务,判断服务是否存在,是否启动》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇mysql 在update中实现子查询的方式配置RedisTemplate、JedisPoolConfig、JedisConnectionFactory+自定义序列化 (xml+java方式)+使用下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

关于toString的自动调用

1 class a{ 2 3 } 4 5 class b extends a{ 6 7 String rr = "zzz"; 8 9 public String toString(){ 10 11 return "aa"; 12 13 } 14 15 }...

Java 之 Scanner 类

一、Scanner 类 Scanner 是一个可以解析基本类型和字符串的简单文本扫描器。 Demo: 1 Scanner sc = newScanner(System.in); 2 int i = sc.nextInt(); System.in 系统输入指的通过键盘录入数据。 二、引用类型使用步骤   1、导包 使用 import 关键字导包,在类的所有代...

C#读写txt文件的方法

1.添加命名空间   System.IO;   System.Text; 2.文件的读取 #region 读取TXT文本文件 /// <summary> /// FileStream读取文本文件 /// </summary> public void FileStre...

Https socket 代理

https直接与服务器通过ssLsocket连接可行 import java.io.InputStream;import java.io.OutputStream;import java.security.SecureRandom;import javax.net.ssl.SSLContext;import javax.net.ssl.SSLSocket;...

利用C#的反射机制动态调用DLL类库

最近由于业务要求,需要动态调用DLL类库,所以研究了一下,感觉还好也不太难,今天就把自己理解的写了一个小例子(已经通过VS2005跑通),供大家一起研究和探讨,有理解不当的地方还请高手们多多指正,谢谢啦! 好,在这之前我先把反射所需要使用的几个类给大家列一下: 1、使用Assembly类定义和加载程序集,加载在程序集清单中列出模块,以及从此程序集中查找类型...

2018-2019-2 20175126谢文航 实验三《敏捷开发与XP实践》实验报告

一、实验报告封面 课程:Java程序设计 班级:1751 班 姓名:谢文航 学号:20175126 指导教师:娄嘉鹏 实验日期:2019年5月2日 实验时间:--- 实验序号:实验三 实验名称:敏捷开发与XP实践 实验内容 1. XP基础 2. XP核心实践 3. 相关工具 实验要求 1.没有Linux基础的同学建议先学习《Linux基础入门(新版)》...