• 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

  • 相关阅读:
    [转]用asp.net实现远程获取其他网站页面指定内容
    Occupation career planning
    【原创】Self-Contained Container(自包含容器)
    Kindle 转换器
    Win32 多线程学习笔记
    OC学习心得【适合初学者】
    OC-通讯录
    植物大战僵尸
    三、属性和点语法
    二十、函数指针高级(动态调用)
  • 原文地址:https://www.cnblogs.com/nontracey/p/6618052.html
Copyright © 2020-2023  润新知