Microsoft Windows 服务(即,之前的 NT 服务)使您可以建立在它们本身的 Windows 会话中可长时间运行的可执行应用程序。这些服务能够在计算机启动时自动启动,能够暂停和从新启动并且不显示任何用户界面。这使服务很是适合在服务器上使用,或任什么时候候,为了避免影响在同一台计算机上工做的其余用户,须要长时间运行功能时使用。还能够在不一样于登陆用户的特定用户账户或默认计算机账户的安全上下文中运行服务。安全
使用Microsoft Visual Studio2012能够很方便的建立一个Windows服务,本例实现一个向D盘的txt文件里,写入系统时间的Windows服务。服务器
新建一个Windows Services工程:ide
工程建立好以后,默认会有一个Services1.cs文件,删掉此文件,从新添加一个新Item函数
右击新添加的这个文件,选择View code,能够看到,有两个函数 OnStart和OnStop,OnStart函数在启动服务时执行,OnStop函数在中止服务时执行。spa
这两个函数的代码以下:code
1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Diagnostics; 6 using System.Linq; 7 using System.ServiceProcess; 8 using System.Text; 9 using System.Threading.Tasks; 10 using System.IO; 11 12 namespace MyFirstWindowsService 13 { 14 partial class MyWindowsService : ServiceBase 15 { 16 public MyWindowsService() 17 { 18 InitializeComponent(); 19 } 20 21 protected override void OnStart(string[] args) 22 { 23 // TODO: Add code here to start your service. 24 FileStream fileStream = new FileStream(@"D:\MyWindowsService.txt", FileMode.OpenOrCreate, FileAccess.Write); 25 26 StreamWriter streamWriter = new StreamWriter(fileStream); 27 28 streamWriter.BaseStream.Seek(0, SeekOrigin.End); 29 30 streamWriter.WriteLine("My service started" + DateTime.Now.ToString() + "\n"); 31 32 streamWriter.Flush(); 33 34 streamWriter.Close(); 35 36 fileStream.Close(); 37 } 38 39 protected override void OnStop() 40 { 41 // TODO: Add code here to perform any tear-down necessary to stop your service. 42 FileStream fileStream = new FileStream(@"D:\MyWindowsService.txt", FileMode.OpenOrCreate, FileAccess.Write); 43 44 StreamWriter streamWriter = new StreamWriter(fileStream); 45 46 streamWriter.BaseStream.Seek(0, SeekOrigin.End); 47 48 streamWriter.WriteLine("My service stopped " + DateTime.Now.ToString() + "\n"); 49 50 streamWriter.Flush(); 51 52 streamWriter.Close(); 53 54 fileStream.Close(); 55 } 56 } 57 }
以后须要新建一个安装组件MyWindowsServiceProjectInstaller(右击MyWindowsService.cs这个文件选择view desiner,而后选择Add Installer),须要将MyFirstWindowsServiceProcessInstaller的account属性设置为localservice.orm
编写批处理文件:blog
安装服务批处理:string
1 %SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe C:\Users\gaoja1\Desktop\MyWindowsService\MyFirstWindowsService\bin\Debug\MyFirstWindowsService.exe 2 Net Start ServiceTest 3 sc config ServiceTest start= auto
卸载服务批处理:it
%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe /u C:\Users\gaoja1\Desktop\MyWindowsService\MyFirstWindowsService\bin\Debug\MyFirstWindowsService.exe
服务安装好以后:
服务启动以后能够在D盘看到一个txt的文件,里面记录了服务的启动时间.