windows服务应用程序是一种长期运行在操作系统后台的程序,它对于服务器环境特别适合,它没有用户界面,不会产生任何可视输出,任何用户输出都回被写进windows事件日志。计算机启动时,服务会自动开始运行,他们不要用户一定登陆才运行。

可以通过选择菜单“开始”-〉“控制面板”-〉“管理工具”-〉“服务”来查看现有系统中的服务,如下图:

创建window 服务

新建一个window 服务项目MyService,如下图

从工具箱的组件表中拖动一个Timer对象到这个视图设计器上面。

设置Timer属性,Enable为true,Interval属性为3000毫秒

双击Timer事件,添加事件

后台代码

 1    public partial class Service1 : ServiceBase
 2     {
 3         public Service1()
 4         {
 5             InitializeComponent();
 6         }
 7
 8         protected override void OnStart(string[] args)
 9         {
10             // TODO: 在此处添加代码以启动服务。
11         }
12
13         protected override void OnStop()
14         {
15             // TODO: 在此处添加代码以执行停止服务所需的关闭操作。
16         }
17
18         private void timer1_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
19         {
20
21         }
22     }

 1  public partial class Service1 : ServiceBase
 2     {
 3         public Service1()
 4         {
 5             InitializeComponent();
 6         }
 7         protected override void OnStart(string[] args)
 8         {
 9             // TODO: 在此处添加代码以启动服务。
10             string state = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss") + "启动";
11             WriteLog(state);
12         }
13         protected override void OnStop()
14         {
15             // TODO: 在此处添加代码以执行停止服务所需的关闭操作。
16             string state = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss") + "停止";
17             WriteLog(state);
18         }
19         private void timer1_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
20         {
21             WriteLog(DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss"));
22         }
23         public void WriteLog(string str)
24         {
25             using (StreamWriter sw = File.AppendText(@"c:\service.txt"))
26             {
27                 sw.WriteLine(str);
28                 sw.Flush();
29             }
30         }
31     }

其中OnStart和OnStop分别是服务器启动和停止后,所发生的事件操作方法,WriteLog是操作方法;

将服务程序service1.cs 切换到视图模式,用鼠标右键单击设计视图选择“添加安装程序”选项,此后在项目中自动增加了一个ProjectInstaller.cs,如下图

设置serviceInstaller1组件属性,

ServiceName=MyServiceLog安装服务器名字;

StartType=Automatic  开机自动启动

设计serviceProcessInstaller1的属性Account=LocalSystem;

运行编译,一个简单的windows服务已经开发完成

注:如果在代码中的文件路径写成如下“service.txt”,那么此时文件保存在C:\WINDOWS\system32文件夹中。

安装window服务

安装命令:InstallUtil.exe MyServiceLog.exe

InstallUtil存在路径为:C:\WINDOWS\Microsoft.NET\Framework\.NET版本号

复制C:\WINDOWS\Microsoft.NET\Framework\版本号  路径中的InstallUtil.exe 到bin/debug或bin/release文件夹中,在命令行窗口中直接运行命令

InstallUtil.exe MyServiceLog.exe,在系统中注册这个服务,使它建立一个合适的注册项,如下图:

然后再window服务列表中,启动MyServiceLog服务

卸载window 服务

命令:InstallUtil.exe MyServiceLog.exe /u

如果修改这个服务,但是路径没有变化的话是不需要重新注册服务的,直接停止服务,然后用新的文件覆盖原来的文件即可,如果路径发生变化,应该先卸载这个服务,然后重新安装这个服务。

Window服务应用程序体系结构

.net framework对windows服务提供了更多的支持,在命名空间System.ServiceProcess下.

包括类如下:

ServiceBase 所有Window服务的基类

ServiceController 该类的一个实例代表一个具体的windows服务

ServiceControllerPermission 用于控制ServiceController的使用权限

ServiceInstaller 用于执行对windows服务的安装

ServiceProcessInstaller 用于执行对windows服务的安装,与上类的不同的是,该类可以代表一个可以执行的windows服务的进程.

ServiceBase类

ServiceBase方法:

方法

描述

Run()

运行一个windows服务

OnContinue()

继续执行服务

OnCustomCommand()

向windows服务发出自定指令

OnPause()

暂停正在运行的windows服务

OnPowerEvent()

当计算机的电源状态改变是调用

OnShutDown()

当系统关闭条用OnStart()开始一个windows服务

OnStop()

结束一个windows服务

ServiceBase属性:

属性

描述

AutoLog

表示是否将开始,结束,暂停,继续等指令写入事件日志

CanHandlePowerEvent

表示该服务是否支持电源事件

CanPauseAndContinue

表示该服务是否支持暂停和继续功能

CanShutDown

表示该服务是否支持关闭功能

CanStop

表示该服务是否支持结构功能

EventLog

应用程序的时间日志

ServiceName

该服务名称

ServiceController类

服务控制类,用于控制windows服务的各种具体行为,它既可以控制本地的windows服务,有可以控制远程的windows服务。

ServiceControler的方法:

方法

描述

GetDivices()

得到一台计算机上设备驱动器服务

GetServices()

得到一台计算上的非设备驱动器服务

Close()

用于断开服务连接,并且释放服务控制器所占用的资源

Continue()

继续被暂停的服务

ExcuteCommand()

对服务执行一条自定义命令

Pause()

暂停服务

Refresh()

对所有属性更新

Start()

启动服务

Stop()

停止服务

WaitForStatus()

等待服务到达指定的状态

window 服务(一)相关推荐

  1. 接Window服务(二)

    接Window服务(一) ServiceController方法调用 1 public partial class Service1 : ServiceBase 2 { 3 public Servic ...

  2. window 服务(二)

    window 服务(二) 接Window服务(一) ServiceController方法调用 public partial class Service1 : ServiceBase { public ...

  3. 19.浏览器Window服务($window)

    转自:https://www.cnblogs.com/best/tag/Angular/ 引用浏览器的window对象.默认浏览器的window是全局的根对象. 示例代码: 1 <!DOCTYP ...

  4. C# 文件路径-Window服务

    //取服务安装路径 public System.String Get_WindowService_Path() { System.String str_Path = System.String.Emp ...

  5. C#2.0 编写window服务

    C#2.0 编写window服务(msdn) 注意 Visual Studio 标准版中不提供"Windows 服务"模板及相关功能.有关更多信息,请参见 Visual Studi ...

  6. 内网穿透-利用frp进行远程桌面控制(window服务端,window客户端)

    内网穿透-利用frp进行远程桌面控制(window服务端,window客户端) 参考链接 https://blog.csdn.net/weixin_38416696/article/details/1 ...

  7. window服务是什么?

    引言:window服务,就是一个对象或说一个变量(结构),里面存放了控制某一个进程(程序)启动或是停止等的信息. 一个服务首先是一个Win32可执行程序,或者是是rundll32.exe来运行一个.d ...

  8. 如何把Asp.NetCore部署成window服务

    在window上部署Asp.netcore时,当不想使用IIS时,使用双击启动就会出现一个黑色的窗体,总感觉会不经意间给关闭掉.这时候就想如果可以生成winserver,这样就可以避免掉,也可以使崩溃 ...

  9. 删除oracle卸载后window服务中残留的oracle服务

    卸载oracle后,发现window服务中还残留着oracle相关服务,现记录下删除这些残留的方法: 管理员运行cmd,输入命令 sc delete "以oracle开头服务名称" ...

最新文章

  1. ACCP学习旅程之-----基础篇
  2. windows加固方案
  3. VS2010配置QT5.5.0开发环境
  4. Nginx教程系列五:Nginx+Keepalived搭建高可用主从架构
  5. mysql修改索引对交易影响吗_MySQL中字符串索引对update的影响分析
  6. 深度学习:tensorflow的简单用法,tensorflow实现SVM
  7. 【Qt】QLayoutItem类
  8. linux划分root_vg,為Linux添加新硬盤,划分LVM分區
  9. 查看游戏服务器ip地址网站,如何查看游戏服务器IP地址
  10. OpenCV人脸识别之三:识别自己的脸
  11. android 7.0 黑屏,Android app启动是出现白屏或者黑屏如何解决?
  12. 第六章 Android应用的生命周期
  13. c语言中mylist是什么参数,数据结构题集(C语言版)算法设计题解析-第二章
  14. python函数拟合
  15. 数据结构—顺序表基本操作的实现(C语言)
  16. 计算空间中点到直线的距离
  17. linux下搭建阿帕奇服务器
  18. java 电子签章 开源_java操作pdf制作电子签章 - CSDN博客
  19. 数字图像处理(2): 颜色空间/模型—— RGB, CMY/CMYK, HSI, HSV, YUV
  20. 雪球网 存入mysql

热门文章

  1. 外贸常用术语_外贸干货!做外贸常用的贸易术语,几个妙招教你快速记住!
  2. python的函数式编程_Python函数式编程-概念理解,python
  3. java链接mysql输出查询_用java做网站,java连接数据库并查询输出到页面
  4. java执行sql文件_面试官:MyBatis SQL是如何执行的?把这篇文章甩给他
  5. 2020年下信息系统项目管理师合格分数线通知
  6. org.dom4j.DocumentException: 20 Nested exception: 20
  7. PMP知识点(九、风险管理)
  8. 《系统集成项目管理工程师》必背100个知识点-47质量保证人员(QA)的主要工作...
  9. 笔记-项目范围管理-需求工程-需求管理
  10. 笔记-高项案例题-2016年上-计算题