Windows服务初探
在Windows中,对于一些不需要显示图形界面的应用程序,我们可以把它做成Windows服务,让它在后台运行,例如一些文件监视服务等。一台电脑中的Windows服务可以在“计算机-管理-服务应用程序-服务”中看到,如图:
在这里,我们可以启动或停止一个服务。
创建服务:
下面我们来创建一个文件监视功能的Windows服务。
用VS新建一个项目,模版选择“Windows服务”,在服务代码中会有两个方法:OnStart与OnStop,分别是服务的启动时的执行代码与服务停止时的执行代码。
public partial class WatchService : ServiceBase{public WatchService(){InitializeComponent();}FileSystemWatcher watcher;/// <summary>/// 服务开始时执行代码/// </summary>/// <param name="args"></param>protected override void OnStart(string[] args){WriteLog("服务开始");string path = @"D:\text";watcher = new FileSystemWatcher(path);// 监视新增文件watcher.NotifyFilter = NotifyFilters.FileName;//同时监视子目录watcher.IncludeSubdirectories = true;watcher.Created += new FileSystemEventHandler(watcher_Changed);watcher.EnableRaisingEvents = true;}/// <summary>/// 服务停止时执行代码/// </summary>protected override void OnStop(){WriteLog("服务停止");}private void watcher_Changed(object sender, FileSystemEventArgs e){try{WriteLog(e.Name + " " + e.ChangeType);}catch (Exception ex){WriteLog(ex.ToString());}}/// <summary>/// 写日志的方法/// </summary>/// <param name="msg"></param>private void WriteLog(string msg){string path = @"D:\log.txt";using (StreamWriter sw = new StreamWriter(path, true)){sw.WriteLine(DateTime.Now.ToString() + " " + msg);}}}
发布服务:
转到服务的界面窗体,点击右键,选择添加安装程序,会出现一个ProjectInstaller.cs。在其界面窗体中,选择serviceInstaller1,右键属性,可以设置服务启动方式,服务名称(服务名称不能与其它Windows服务名称重名),服务描述,服务显示名称等,如图:
另一个serviceProcessInstaller1的属性可以设置服务的运行账户,如图:
完成这些设置后,重新生成服务,打开VS2010命令行工具,以管理员身份运行,输入命令InstallUtil.exe+服务程序地址,如InstallUtil.exe “D:\Service\FileWatchDemo.exe”
如果通过命令行工具,则可以在C:\Windows\Microsoft.NET\Framework\v2.0.50727或C:\Windows\Microsoft.NET\Framework\v4.0.30319目录中找到InstallUtil.exe
提示安装完成后,就可以在服务管理中看到刚刚安装的服务了。
删除服务:
InstallUtil.exe /u +"服务地址" InstallUtil.exe /u "D:\Service\FileWatchDemo.exe"
或
SC delete +服务名称,如 sc delete FileWatchService
调试服务:
因为服务不能直接在VS里面启动调式,若要调试服务一般是在服务安装后通过附加进程的方式来调试。更好的做法是我们先建一个控制台或winform类型的测试项目,在测试项目中做调试然后再部署成Windows服务。
Windows服务初探相关推荐
- 用.Net开发Windows服务初探
用.Net开发Windows服务初探 1 什么是Windows服务 Windows服务应用程序是一种需要长期运行的应用程序,它对于服务器环境特别适合.它没有用户界面,并且也不会产生任何 ...
- 利用vs.net快速开发windows服务(总结)
引用 http://www.cnblogs.com/lovecherry/archive/2005/03/25/125527.html 在很多应用中需要做windows服务来操作数据库等操作,比如 ( ...
- .Net Core快速创建Windows服务
1.新建.Net Core控制台程序,添加新建项Windows服务: 修改Progran.cs: class Program{static void Main(string[] args){Servi ...
- C#创建Windows服务
利用VS.NET创建C# Windows服务 在很多应用中需要做windows服务来操作数据库等操作,比如 (1)一些非常慢的数据库操作,不想一次性去做,想慢慢的通过服务定时去做,比如定时为数据库备份 ...
- C#实现一个用于开机启动其他程序的Windows服务
今天决定写写博客,不为别的,只当自己的积累,如果与此同时能不误导他人甚至给了朋友们一些启发,那真是更好了! 程序的目的和用途: 很多开机启动程序仅仅加在启动项里面,只有登陆后才真正启动.windows ...
- 用.NET创建Windows服务
用.NET创建Windows服务 译者说明:我是通过翻译来学习C#的,文中涉及到的有Visual Studio.NET有关操作,我都根据中文版的VS.NET显示信息来处理的,可以让大家不致有误解. 作 ...
- 用C#创建Windows服务(Windows Services)
转载自 hyslove 最终编辑 hyslove Windows服务在Visual Studio 以前的版本中叫NT服务,在VS.net启用了新的名称.用Visual C# 创建Windows服务不是 ...
- java建立_利用Java创建Windows服务
1.Java测试代码 importorg.apache.log4j.Logger;public classTest {private static Logger logger = Logger.get ...
- 更上层楼:动态安装你的windows服务
前言:先说明一下本文示例windows服务的简单需求,即根据外部配置实现不同方式记录日志的功能.记录日志的方式有三种,分为文本记录.数据库记录以及文本和数据库同时记录日志.如您所知,这个功能基本上没有 ...
最新文章
- centos6.5-vsftp搭建
- 八、pyqt5按钮类控件——QPushButton、QRadioButton、QCheckBox
- windows7x64安装小记
- OSError: Could not find kaggle.json
- Job System之Hello World
- git项目初始上传服务器,快速架设一个使用 SSH 的 Git 服务
- 5分钟搞懂如何在Spring Boot中Schedule Tasks
- 计算机视觉论文-2021-12-01
- 统计推断—参数估计—点估计、区间估计、t分布、Z分布
- 计算机如何设置网络,如何设置宽带连接
- win2016开启ntp_WindowsServer2016NTP服务端和客户端配置【NTP时间同步服务器】
- 对比俩个List之间的差异
- 操作系统---信号量
- Storm示例剖析-fastWordCount
- jdk+apache+jboss+mod_jk+openssl--从零开始搭建Linux测试环境
- MySQL数据库13——插入数据(INSERT)
- Java(老白再次入门) - 数组
- UVA10815-Andy's First Dictionary 【set】
- android中api简介
- Vue2.0实现炫酷的主题切换功能