VS2013创建Windows服务与调试服务的图文方法

 更新时间:2017年02月15日 11:49:33   作者:Pete-Jones  
这篇文章主要介绍了VS2013创建Windows服务与调试服务的图文方法,需要的朋友可以参考下

1、创建Windows服务

 

说明:

a)Description 服务描述,直接显示到Windows服务列表中的描述;

b)DisplayName 服务显示名称,直接显示到Windows服务列表中的名称;

c)ServiceName 服务进程名称,安装与卸载服务时的唯一标识。

单击“serviceProcessInstaller1”,在其属性窗口中设置Account帐号方式,建议为LocalService(当然也可以Account属性改为 LocalSystem,这样,不论是以哪个用户登录的系统,服务总会启动)。

编写安装和卸载脚本,并将放在bin/debug或bin/Release文件夹下。

安装脚本

%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe %~dp0exe程序的名称.exe
Net Start 服务名称
sc config 服务名称 start= auto
pause

这里注意,在exe程序的名称前面有 %~dp0 这是代表当前位置

服务名称 对应 上面我们创建服务时ServerName的名称

卸载脚本

%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe /u %~dp0exe程序的名称.exe
pause

同时还要注意一下,本人用的.NET4.0的版本,所以\Microsoft.NET\Framework\v4.0.30319\installutil.exe 这一段要根据你机器安装.NET的版本来定。

其实脚本主要是通过installutil.exe 来进行安装和卸载服务的,同时此处涉及的批处理命令不多。

2、调试windows服务

在项目中不用启动windows服务项目,而是直接附加进程来进行调试。

 

在可用进程中,查找到你刚才通过脚本安装的服务就可以了。

再发一个写入服务代码的Demo

public partial class MMSServer : ServiceBase
  {
    private Timer time = new Timer();
    public MMSServer()
    {
      InitializeComponent();
    }

    protected override void OnStart(string[] args)
    {
#if DEBUG
      if (!Debugger.IsAttached)
        Debugger.Launch();
      Debugger.Break();
#endif
      WriteLog("服务启动,时间:" + DateTime.Now.ToString("HH:mm:ss") + "\r\n");
      time.Elapsed += new ElapsedEventHandler(MethodEvent);
      time.Interval = 3 * 1000;
      time.Start();
    }

    protected override void OnPause()
    {
#if DEBUG
      if (!Debugger.IsAttached)
        Debugger.Launch();
      Debugger.Break();
#endif
      WriteLog("服务暂停,时间:" + DateTime.Now.ToString("HH:mm:ss") + "\r\n");
      base.OnPause();
    }
    protected override void OnContinue()
    {
#if DEBUG
      if (!Debugger.IsAttached)
        Debugger.Launch();
      Debugger.Break();
#endif
      WriteLog("服务恢复,时间:" + DateTime.Now.ToString("HH:mm:ss") + "\r\n");
      base.OnContinue();
    }

    protected override void OnShutdown()
    {
      WriteLog("计算机关闭,时间:" + DateTime.Now.ToString("HH:mm:ss") + "\r\n");
      base.OnShutdown();
    }

    private void MethodEvent(object source, System.Timers.ElapsedEventArgs e)
    {
      time.Enabled = false;
      string result = string.Empty;
      try
      {
        //.........
        result = "执行成功,时间:" + DateTime.Now.ToString("HH:mm:ss") + "\r\n";
      }
      catch (Exception ex)
      {
        result = "执行失败,原因:" + ex.Message + "\r\n";
      }
      finally
      {
        WriteLog(result);
        time.Enabled = true;
      }
    }
    protected override void OnStop()
    {
#if DEBUG
      if (!Debugger.IsAttached)
        Debugger.Launch();
      Debugger.Break();
#endif
      WriteLog("服务停止,时间:" + DateTime.Now.ToString("HH:mm:ss") + "\r\n");
    }
    /// <summary>
    /// 日志记录
    /// </summary>
    /// <param name="logInfo"></param>
    private void WriteLog(string logInfo)
    {
      try
      {
        string logDirectory = AppDomain.CurrentDomain.BaseDirectory + "\\Logs";
        if (!Directory.Exists(logDirectory))
        {
          Directory.CreateDirectory(logDirectory);
        }
        string filePath = logDirectory + "\\" + DateTime.Now.ToString("yyyy-MM-dd") + ".txt";
        File.AppendAllText(filePath, logInfo);
      }
      catch
      {

      }
    }
  }

以上就是关于VS2013创建Windows服务与调试服务的全部内容了,希望大家以后多多支持脚本之家

相关文章

  • 解析C#设计模式编程中的装饰者模式

    解析C#设计模式编程中的装饰者模式

    这篇文章主要介绍了C#设计模式编程中的装饰者模式,同时也谈到了其在.NET框架中的应用,需要的朋友可以参考下
    2016-02-02
  • C#并行库Task类介绍

    C#并行库Task类介绍

    这篇文章介绍了C#并行库Task类,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • Unity UGUI的TouchInputModule触摸输入模块组件介绍使用示例

    Unity UGUI的TouchInputModule触摸输入模块组件介绍使用示例

    这篇文章主要为大家介绍了Unity UGUI的TouchInputModule触摸输入模块组件介绍使用示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-08-08
  • C#字典转指定类型的技巧分享

    C#字典转指定类型的技巧分享

    这篇文章主要给大家介绍了C#字典转指定类型的技巧,文中通过代码示例介绍的非常详细,对大家的学习或工作有一定的帮助,有需要的朋友可以借鉴参考一下
    2023-10-10
  • c#基于opencv,开发摄像头播放程序

    c#基于opencv,开发摄像头播放程序

    这篇文章主要介绍了c#基于opencv,开发摄像头播放程序的示例,帮助大家更好的理解和学习使用c#,感兴趣的朋友可以了解下
    2021-03-03
  • c#冒泡排序示例分享

    c#冒泡排序示例分享

    这篇文章主要介绍了c#冒泡排序示例分享,需要的朋友可以参考下
    2014-02-02
  • C#实现给Word每一页设置不同图片水印

    C#实现给Word每一页设置不同图片水印

    Word中设置水印时,可加载图片设置为水印效果,但通常添加水印效果时,会对所有页面都设置成统一效果。本文将利用C#实现给Word每一页设置不同图片水印的效果,需要的可以参考一下
    2022-02-02
  • c# 遍历获取所有文件的示例代码

    c# 遍历获取所有文件的示例代码

    这篇文章主要介绍了c# 遍历获取所有文件的示例代码,帮助大家更好的理解和学习python,感兴趣的朋友可以了解下
    2020-12-12
  • C#实现Windows服务测试与调试

    C#实现Windows服务测试与调试

    这篇文章介绍了C#实现Windows服务测试与调试的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-02-02
  • WPF实现多运算符表达式计算器

    WPF实现多运算符表达式计算器

    这篇文章主要为大家详细介绍了WPF实现多运算符表达式计算器,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-11-11

最新评论