Windows服务开发知识学习实践步骤

(1)在Visual Studio 创建项目时,选择创建Windows服务项目模板

(2)项目创建成功后的界面如下图。项目会自动生成一个Service1.cs文件,我们可以对他重命名FirstService.cs

点击添加安装程序后,右侧解决方案出现了ProjectInstaller.cs,双击该文件,可看到它由两个文件构成:

(3)点击serviceInstaller1文件,在右下角属性框修改如下几个属性信息:

  • ServiceName:服务名称
  • Description:描述
  • Display Name:显示名称
  • StartType:启动类型,可以设置为手动或自动

点击serviceProcessInstaller1文件,在右下角属性框修改Account信息:指示用来运行此服务的账户类型,可以设置为LocalSystem

(4)这样,以上创建widows服务前置操作已基本完成。查看FirstService.cs源码,可以看到OnStart()和OnStop()方法需要我们重写:

(5)重写OnStart()和OnStop()方法

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.ServiceProcess;
using System.Text;
using System.Threading.Tasks; namespace WindowsServiceStudy
{
public partial class FirstService : ServiceBase
{
public FirstService()
{
InitializeComponent();
} protected override void OnStart(string[] args)
{
WriteInfo("记录服务启动");
} protected override void OnStop()
{
WriteInfo("记录服务关闭");
} private string filePath = @"D:\个人文档资料\1-实际实践记录\1-windowsservice\ServiceLog.txt"; private void WriteInfo(string info)
{
using (FileStream stream = new FileStream(filePath, FileMode.Append))
{
using (StreamWriter writer = new StreamWriter(stream))
{
writer.WriteLine($"{DateTime.Now},{info}");
}
}
}
}
}

(6)保存---清理---重新生成。

此时在项目bin文件夹下会生成刚刚的.exe文件

双击该文件,提示报错:

(7)通过InstallUtil.exe执行自开发的Windows服务的.exe文件安装

在如下地址找到InstallUtil.exe文件:

以管理员权限打开cmd,在命令框内使用命令: InstallUtil 后跟自开发服务的.exe文件的绝对地址

如命令:installutil D:\个人文档资料\1-实际实践记录\1-windowsservice\WindowsServiceStudy\bin\Debug\WindowsServiceStudy.exe

若是卸载: installutil D:\个人文档资料\1-实际实践记录\1-windowsservice\WindowsServiceStudy\bin\Debug\WindowsServiceStudy.exe -u

执行过程、结果如下图:

打开服务界面,可以看到服务已安装上:

另外,要特别注意VS开发时属性的配置与实际服务显示各项的对应关系:

通过服务界面,启动或关闭服务后,记录的日志结果为:

Windows服务开发入门实践的更多相关文章

  1. C# Windows服务开发从入门到精通

    一.课程介绍 大家都知道如果想要程序一直运行在windows服务器上,最好是把程序写成windows服务程序:这样程序会随着系统的自动启动而启动,自动关闭而关闭,不需要用户直接登录,直接开机就可以启动 ...

  2. Kinect for Windows SDK开发入门(一):开发环境配置

    [译]Kinect for Windows SDK开发入门(一):开发环境配置 前几天无意中看到微软发布了Kinect for windows sensor,进去看了一下Kinect应用的例子,发现K ...

  3. Kinect for Windows SDK开发入门(15):进阶指引 下

    Kinect for Windows SDK开发入门(十五):进阶指引 下 上一篇文章介绍了Kinect for Windows SDK进阶开发需要了解的一些内容,包括影像处理Coding4Fun K ...

  4. ASP.NET Core Windows服务开发技术实战演练

    一.课程介绍 人生苦短,我用.NET Core!大家都知道如果想要程序一直运行在Windows服务器上,最好是把程序写成Windows服务程序:这样程序会随着系统的自动启动而启动,自动关闭而关闭,不需 ...

  5. Topshelf 一个简化Windows服务开发的宿主服务框架

    Topshelf是 基于.net框架开发的宿主服务框架.该框架简化了服务的创建,开发人员只需要使用 Topshelf编写一个控制台程序,就能安装为Windows服务.之所以这样原因非常简单:调试一个控 ...

  6. Go单体服务开发最佳实践

    单体最佳实践的由来 对于很多初创公司来说,业务的早期我们更应该关注于业务价值的交付,并且此时用户体量也很小,QPS 也非常低,我们应该使用更简单的技术架构来加速业务价值的交付,此时单体的优势就体现出来 ...

  7. windows 驱动开发入门——驱动中的数据结构

    最近在学习驱动编程方面的内容,在这将自己的一些心得分享出来,供大家参考,与大家共同进步,本人学习驱动主要是通过两本书--<独钓寒江 windows安全编程> 和 <windows驱动 ...

  8. .NET Windows服务开发流程

    前段时间做一个数据迁移项目,刚开始用B/S架构做的项目,但B/S要寄存在IIs中,而IIs又不稳定因素,如果重启IIs就要打开页面才能运行项目.有不便之处,就改用Windows服务实现.这篇就总结下, ...

  9. Windows驱动开发入门指引

       1.  前言 因工作上项目的需要,笔者需要做驱动相关的开发,之前并没有接触过相关的知识,折腾一段时间下来,功能如需实现了,也积累了一些经验和看法,所以在此做番总结. 对于驱动开发的开发指引,微软 ...

  10. [译]Kinect for Windows SDK开发入门(十八):Kinect Interaction交互控件

    本文译自 http://dotneteers.net/blogs/vbandi/archive/2013/03/25/kinect-interactions-with-wpf-part-i-getti ...

随机推荐

  1. Python基础—初识函数(二)

    1.给函数参数增加元信息 写好一个函数,然后想为这个函数的参数增加一些额外的信息,这样的话其他使用者就能清楚的知道这个函数应该怎么使用. 使用函数参数注解是一个很好的办法,它能提示程序员应该怎样正确使 ...

  2. python爬虫学习——xlwt库,sqlite库

    xlwt库主要是对excel进行操作,主要流程就是创建对象,创建工作表,写入数据,保存数据表.代码练习如下 ''' import xlwt workbook = xlwt.Workbook(encod ...

  3. Ceph集群网络性能测试

    一.测试Ceph集群节点之间的网络性能 在ceph01节点上运行: [root@openstack01 ~]# iperf3 -s -p 6900 -------------------------- ...

  4. HarmonyOS NEXT仓颉开发语言实战案例:动态广场

    大家好,今日要分享的是使用仓颉语言开发动态广场页面,也比较像朋友圈页面: 整个页面分为两部分,分别是导航栏和状态列表,导航栏比较简单,我们可以先写下导航栏的具体代码和页面的基本结构: Column{ ...

  5. dotnet 代码调试方法

    本文将会从基础到高级,从简单到复杂的顺序,告诉大家如何调试 dotnet 系应用,特别是桌面端应用.本文将会向大家介绍使用 VisualStudio 大量的功能用来提高调试效率,穿插着也会介绍一些好用 ...

  6. 1.Seismic Unix的安装教程

    安装SU(Seismic Unix)的基本步骤 Seismic Unix(SU)是科罗拉多矿业学院的波场研究中心(CWP)开发的一款开源地震数据处理软件,当前很多学者在Linux下用SU做地震数据的处 ...

  7. Hadoop:HDFS设计原理

    一.HDFS组成结构 1.NameNode 相当于Master,主要存储文件的元数据(文件名.目录结构.文件属性等),以及每个文件的块列表和块所在的DataNode. 配置副本策略,管理数据库映射信息 ...

  8. java实现聊天,服务端与客户端代码(UDP)-狂神改

    首先是文件结构: 最后run的是下面两个 代码用的狂神的,不过他写的有点小bug,比如传信息会出现一堆空格(recieve data那里长度不应该用data.lenth()而应该用packet.get ...

  9. 前端开发系列089-Node篇之os

    一.OS模块介绍 Node中的OS模块提供了和当前系统相关的一系列实用方法.在代码中可以直接用os = require("os")的方式来引入.OS模块本身非常的简单,本文将简单对 ...

  10. 前端开发系列042-基础篇之TypeScript语言特性(二)

    这篇文章中我们将继续在语言特性方面展开探讨,主要介绍了TypeScript中流程控制结构.类以及接口等方面的内容,需要说明的是这篇文章中并不会就相关特性的细节深入展开,你能得到的将只有对它们进行的浅尝 ...