zoukankan      html  css  js  c++  java
  • c#用控制台程序安装启动停止卸载服务

    第一步:新建控制台项目

     第二步:添加服务

    第三步:右键新建完成的服务项 

    点击

    在start 和stop事件中分别写上 

     第四步 编写代码

    双击打开 

      1 using System;
      2 using System.Diagnostics;
      3 using System.IO;
      4 using System.Linq;
      5 using System.ServiceProcess;
      6 
      7 namespace SocketService
      8 {
      9     class Program
     10     {
     11         #region 可以修改的参数
     12         //指定服务名称
     13         private static string ServiceName = "SocketService";
     14         //更换服务显示名称
     15         private static string DisplayServiceName = "SocketService";
     16         //更换服务拓展名
     17         private static string Extension = ".exe";
     18         //更改此项即可更换Service
     19         private static ServiceBase ServiceToRun = new YSocketService();
     20         #endregion
     21         static void Main(string[] args)
     22         {
     23             if (args.Length > 0 && args[0] == "s")
     24             {
     25                 ServiceBase[] ServicesToRun;
     26                 ServicesToRun = new ServiceBase[]
     27                 {
     28                    ServiceToRun,
     29                 };
     30                 ServiceBase.Run(ServicesToRun);
     31             }
     32             else
     33             {
     34                 Console.WriteLine("通用Service半自动化服务操作启动......");
     35                 bool isExit = false;
     36                 while (!isExit)
     37                 {
     38                     Console.WriteLine("请选择,[1]安装服务 [2]启动服务 [3]停止服务 [4]卸载服务 [5]退出");
     39                     bool IsServiceInstalled = ISWindowsServiceInstalled(ServiceName);
     40                     var rs = Convert.ToInt32(Console.ReadLine());
     41                     switch (rs)
     42                     {
     43                         case 1:
     44                             //取当前可执行文件路径
     45                             var path = Path.GetFullPath(ServiceName);
     46                             Process.Start("sc", "create " + ServiceName + " binpath= "" + path + Extension + " s" + ""  displayName= " + DisplayServiceName + " start= auto");
     47                             Console.WriteLine("安装成功");
     48                             break;
     49                         case 2:
     50                             if (IsServiceInstalled == false)
     51                             {
     52                                 Console.WriteLine("服务未安装......");
     53                                 break;
     54                             }
     55                             using (ServiceController control = new ServiceController(ServiceName))
     56                             {
     57                                 if (control.Status == ServiceControllerStatus.Stopped)
     58                                 {
     59                                     Console.WriteLine("服务启动......");
     60                                     try
     61                                     {
     62                                         control.Start();
     63                                         Console.WriteLine("服务已经启动......");
     64                                     }
     65                                     catch (Exception)
     66                                     {
     67                                         Console.WriteLine("无法启动服务!");
     68                                     }
     69                                 }
     70                             }
     71                             break;
     72                         case 3:
     73                             if (IsServiceInstalled == false)
     74                             {
     75                                 Console.WriteLine("服务未安装......");
     76                                 break;
     77                             }
     78                             using (ServiceController control = new ServiceController(ServiceName))
     79                             {
     80                                 if (control.Status == ServiceControllerStatus.Running)
     81                                 {
     82                                     Console.WriteLine("服务停止......");
     83                                     try
     84                                     {
     85                                         control.Stop();
     86                                         Console.WriteLine("服务已经停止......");
     87                                     }
     88                                     catch (Exception)
     89                                     {
     90                                         Console.WriteLine("无法停止服务!");
     91                                     }
     92                                 }
     93                                 else if ((control.Status == ServiceControllerStatus.Stopped)
     94                                 || (control.Status == ServiceControllerStatus.StopPending))
     95                                 {
     96                                     Console.WriteLine("当前服务未启动......");
     97                                 }
     98                             }
     99                             break;
    100                         case 4:
    101                             if (IsServiceInstalled == false)
    102                             {
    103                                 Console.WriteLine("服务未安装......");
    104                                 break;
    105                             }
    106                             Process.Start("sc", "delete " + ServiceName);
    107                             Console.WriteLine("卸载成功");
    108                             break;
    109                         case 5: isExit = true; break;
    110                         default:
    111                             Console.WriteLine("输入错误!");
    112                             isExit = true;
    113                             break;
    114                     }
    115                 }
    116             }
    117         }
    118         /// <summary>
    119         /// 判断服务是否已经安装
    120         /// </summary>
    121         /// <param name="serviceName"></param>
    122         /// <returns></returns>
    123         private static bool ISWindowsServiceInstalled(string serviceName)
    124         {
    125             try
    126             {
    127                 return ServiceController.GetServices().Any(c => c.ServiceName == serviceName);
    128             }
    129             catch
    130             { return false; }
    131         }
    132     }
    133 }
    View Code

    第五步 配置log4net文件

     新建配置文件

    加入代码

     1 <log4net>
     2   <logger name="LogHelper">
     3     <level value="ALL" />
     4     <appender-ref ref="Appender" />
     5   </logger>
     6   <logger name="LogHelperNormal">
     7     <level value="ALL" />
     8     <appender-ref ref="NormalAppender" />
     9   </logger>
    10   <appender name="Appender" type="log4net.Appender.RollingFileAppender">
    11     <!--日志文件名开头-->
    12     <param name="File" value="Log\" />
    13     <!--是否追加到文件,默认为true,通常无需设置-->
    14     <param name="AppendToFile" value="true" />
    15     <param name="MaxSizeRollBackups" value="100" />
    16     <param name="MaxFileSize" value="10240" />
    17     <param name="StaticLogFileName" value="false" />
    18     <!--日期的格式,每天换一个文件记录,如不设置则永远只记录一天的日志,需设置-->
    19     <param name="DatePattern" value="yyyyMMdd&quot;_Exception.htm&quot;" />
    20     <param name="RollingStyle" value="Date" />
    21     <layout type="log4net.Layout.PatternLayout">
    22       <param name="ConversionPattern" value="&lt;HR COLOR=red&gt;%n异常时间:%d [%t] &lt;BR&gt;%n异常级别:%-5p &lt;BR&gt;%n异 常 类:%c [%x] &lt;BR&gt;%n%m &lt;BR&gt;%n &lt;HR Size=1&gt;"  />
    23     </layout>
    24   </appender>
    25   <appender name="NormalAppender" type="log4net.Appender.RollingFileAppender">
    26     <param name="File" value="Log\" />
    27     <param name="AppendToFile" value="true" />
    28     <param name="MaxFileSize" value="10240" />
    29     <param name="MaxSizeRollBackups" value="100" />
    30     <param name="StaticLogFileName" value="false" />
    31     <param name="DatePattern" value="yyyyMMdd&quot;_Normal.htm&quot;" />
    32     <param name="RollingStyle" value="Date" />
    33     <layout type="log4net.Layout.PatternLayout">
    34       <param name="ConversionPattern" value="&lt;HR COLOR=blue&gt;%n日志时间:%d [%t] &lt;BR&gt;%n日志级别:%-5p &lt;BR&gt;%n日 志 类:%c [%x] &lt;BR&gt;%n%m &lt;BR&gt;%n &lt;HR Size=1&gt;"  />
    35     </layout>
    36   </appender>
    37 </log4net>

    完成.

    最终文件形式如图

     其中示例服务的loghelp是使用log4net自己封装了一个类库 使用时候需要把log4net.config文件选择复制到输出目录 不然不会打印日志

    示例代码点击下方下载:(含loghelper)

    网盘地址 链接: http://pan.baidu.com/s/1boWeHiv 密码: kjp5

  • 相关阅读:
    LeetCode Flatten Binary Tree to Linked List
    LeetCode Longest Common Prefix
    LeetCode Trapping Rain Water
    LeetCode Add Binary
    LeetCode Subsets
    LeetCode Palindrome Number
    LeetCode Count and Say
    LeetCode Valid Parentheses
    LeetCode Length of Last Word
    LeetCode Minimum Depth of Binary Tree
  • 原文地址:https://www.cnblogs.com/nontracey/p/6618052.html
Copyright © 2011-2022 走看看