首页 > 系统相关 >c#创建windows服务入门教程实例

c#创建windows服务入门教程实例

时间:2022-11-12 14:46:46浏览次数:47  
标签:服务 ServiceBase c# 入门教程 windows 启动 安装

https://www.cnblogs.com/bruce1992/p/15028817.html

用c#中创建一个windows服务非常简单,与windows服务相关的类都在System.ServiceProcess命名空间下。

每个服务都需要继承自ServiceBase类,并重写相应的启动、暂停、停止等方法。

windows服务的相关信息是存放与注册表中的,所以他可以在不需要用户登录的情况下自动运行,在c#中你不需要再直接向注册表中添加信息了,c#提供了服务安装类 ServiceProcessInstaller和ServiceInstaller来实现服务的安装。

首先,用vs创建一个windows服务项目

2014-02-13_095454

成功后你可以看到

2014-02-13_095922

Program中只包含服务运行的相关信息

 

复制代码代码如下:
/// <summary>
/// 应用程序的主入口点。
/// </summary>
static void Main()
{
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
new Service1()//这里是一个数组,意味着我们可以在一个服务进程中创建多个服务实例,只需要在这里加上即可
};
ServiceBase.Run(ServicesToRun);
}

 

Service1.cs就是我们需要的服务类,与windows服务相关的基本操作大都可以在这里找到,如:Start,Stop,Pause,Continue等,我们要做的就是根据这些操作做不同的处理就可以了。

我们先在服务Start和Stop时分别记录一条信息到D盘

 

复制代码代码如下:
protected override void OnStart(string[] args)
{
  File.AppendAllText("d:" + this.GetType().Name + ".txt", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss 服务启动"));
}
protected override void OnStop()
{
  File.AppendAllText("d:" + this.GetType().Name + ".txt", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss 服务停止"));
}


一个简单的服务就完成了,下一步添加安装信息

双击项目中的Service.cs转到服务设计界面,在空白处右键选择“添加安装程序”

2014-02-13_100931

vs会自动创建一个默认名称为ProjectInstaller.cs的文件并转到相应的设计界面

默认添加两个类 serviceProcessInstaller1和serviceInstaller1,第一个主要用来设置服务所属账户,关系到服务的运行,第二个是服务信息描述,如:服务名、是否自动启动等

右键serviceProcessInstaller1属性,将Account属性选择为LocalSystem

2014-02-13_101602

右键serviceInstaller1属性,将StartType属性设为Automatic(自动启动),Description为“我的第一个windows服务”

全部保存后生成,找到生成的程序。

2014-02-13_101956

由于windows服务不能通过双击直接运行,所以我们需要借助.net提供的InstallUtil.exe来安装服务。

2014-02-13_102233

按回车开始安装,成功后会提示 “提交”阶段已成功完成,如果失败则是“回滚”阶段已成功完成

2014-02-13_102400

打开windows服务管理器就能看到我们安装的服务,默认服务安装成功后不会立刻启动,需要我们手动启动

2014-02-13_102549

如果不出意外,会显示已启动

2014-02-13_102659

到D盘目录下找到Service1.txt,打开会看到我们填入的信息,说明我们做的windows服务已经成功了。

要卸载windows服务可以用InstallUtil.exe /u WindowsService1.exe来卸载或通过系统命令 sc delete 服务名来卸载。

标签:服务,ServiceBase,c#,入门教程,windows,启动,安装
From: https://www.cnblogs.com/Dongmy/p/16883707.html

相关文章

  • 在 react 当中 Element 和 Component 有何区别?(必会)
    在react当中Element和Component有何区别?(必会)点击查看代码reactElement是描述屏幕上所见的内容的数据结构,是对于UI的对象的表述.典型的。reactElement就是利......
  • webpack技术点
    1.认识webpack   简单来说,webpack就是一个静态资源打包工具,负责将项目中依赖的各个模块,打包成一个或多个文件。2.核心概念(1).依赖图dependencygraph   ......
  • 事件在 react 中的处理方式?(必会)
    事件在react中的处理方式?(必会)点击查看代码React元素的事件处理和DOM元素类似,但有一点语法上的不同:React事件绑定属性的命名采用驼峰式写法,而不是小写如果采用JSX的......
  • WINDOWS下从源码编译Carla0.9.13+UE4.26
    CARLA是一个开源的自动驾驶模拟器,基于UE4。本篇文章讲述如何在windows系统上从源码编译Carla0.9.13+UE4.26。参考官方文档:https://carla.readthedocs.io/en/0.9.13/build_......
  • react 中 keys 的作用是什么?
    react中keys的作用是什么?点击查看代码Keys是react用于追踪哪些列表中元素被修改、被添加或者被移除的辅助标识。在开发过程中,我们需要保证某个元素的key在其......
  • 理解C++中 const 在指针中的用法
    intmain(){ int*constarray; constint*array; inta=10; array=&a;//Youcan'texchangearrayself,arrayjustisaintegar// *array=13;//Thisiserror......
  • react 中 refs 的作用是什么?
    react中refs的作用是什么?点击查看代码Refs是react提供给我们的安全访问DOM元素或者某个组件实例的句柄,我们可以为元素添加ref属性然后在回调函数中接受该元......
  • 篇(7)-Asp.Net Core入门实战-从系统菜单功能的增删改查开始(二:修改和删除)
    入门实战-从系统菜单功能的增删改查开始(一:修改和删除)上一篇讲了查询和增加,本章节就把修改和删除讲完。1.实现修改功能。(1).在MenuController中增加2个Action:Edit,分别是......
  • 关键技术[开发react-app]
    关键技术点击查看代码1、使用react官方脚手架工具提供的工作流快速搭建和开发项目2、使用阿里旗下antd-mobile组件库搭建页面结构3、使用react-Router-DOM作为......
  • php程序获取客户端MAC地址
    <?php/***获取网卡的MAC地址原码;目前支持WIN/LINUX系统*获取机器网卡的物理(MAC)地址**/classGetMacAddr{var$return_array=array();//返回带有MAC地......