C#创建Windows服务入门图解(VS2010)


Windows服务大家都知道,比如Audio、Theme都是大家比较熟悉的服务,他们可以设为自动启动的,并且在注册表的开机自启动项里是没有痕迹的。所以以前曾经用来隐藏过木马。但以前搞的那个木马服务,是通过手工导注册表来做的。从来没正式的开发过一个服务。

之前做的一个项目里有人用Service的方法定时获取远程数据,很犀利,我感觉还是挺有用的。所以今天我也开荒了一下用C#开发Windows服务,正规的体验了一下开发流程。下面就是我做的最入门的例子,MSDN上有类似的教程,但MSDN漏了一些比较重要的步骤,所以大家请看我开荒成功的版本:

首先,在VS2010里建立一个Windows Service项目:

它会提供我们一个默认的Serivce1,可以删掉,换成自己的。比如Fucker.cs,当然,你得把Program.cs里调用的语句换掉:

static void Main()
{
    ServiceBase[] ServicesToRun;
    ServicesToRun = new ServiceBase[]
	{
		new Fucker()
	};
    ServiceBase.Run(ServicesToRun);
}

创建Fucker.cs后,打开Design视图,从工具箱里拖一个EventLog进来,这个是在Components分类里的。注意,你不能用Windows Form的控件了,不然编译会爆。如果你的Service想用UI的方式弹出消息,只能在build的文件夹里再放一个开发好的专门弹东西的exe了。。。

现在,你就可以码这个Service了。先在构造函数里加几句话:

public Fucker()
{
    InitializeComponent();

    if (!System.Diagnostics.EventLog.SourceExists("TheFuckers"))
    {
        System.Diagnostics.EventLog.CreateEventSource("TheFuckers", "FuckerLog");
    }
    evt.Source = "TheFuckers";
    evt.Log = "FuckerLog";
}

首先判断系统的EventLog里有木有“TheFuckers”这个分类,如果木有,就建一个。后面那个参数“FuckerLog”是Log的名称。接下来我们要在服务启动和停止的时候写日志:

protected override void OnStart(string[] args)
{
    evt.WriteEntry("Oh Fuck!");
}

protected override void OnStop()
{
    evt.WriteEntry("Oh Shit!");
}

现在,Fucker的服务就码完了。我们需要添加一个很重要的installer,不然没法安装。方法是在Fucker的设计视图上点右键,选Add Installer:

然后我们要码一下ProjectInstaller.Designer.cs,注意,是Designer.cs,设计器生成的那个代码文件,而不是设计视图上点右键出来的那个ProjectInstaller类。

首先要去掉用户名和密码,不然安装的时候会问你要,它会用这个帐号去启动服务,如果你的帐号没有权限,服务是要安装失败的。注释掉下面的代码:

// this.serviceProcessInstaller1.Password = null;
// this.serviceProcessInstaller1.Username = null;

然后换成LocalSystem身份启动服务:

this.serviceProcessInstaller1.Account = System.ServiceProcess.ServiceAccount.LocalSystem;

如果要更改服务的名称(就是在服务管理器里看到的名字)可以改ServiceName属性:

this.serviceInstaller1.ServiceName = "Fucker";

现在代码部分已经码完了,最后要在项目属性里改一个Start Up的选项:

然后编译一下,成功之后会在bin文件夹生成一个exe。

然后在VS2010附送的命令行工具里用installutil.exe就可以安装了:

D:\DotNetProjects\TestLab\ShowFuck\bin\Debug>installutil.exe ShowFuck.exe

安装成功会显示消息:

现在去Windows的服务管理器里就能够看到我们的服务了:

试试启动再停止服务,我们就可以在事件日志里看见Fuck了,哈哈。


时间: 2024-12-25 01:00:03

C#创建Windows服务入门图解(VS2010)的相关文章

.Net创建windows服务入门

本文主要记录学习.net 如何创建windows服务. 1.创建一个Windows服务程序 2.新建安装程序 3.修改service文件 代码如下 protected override void OnStart(string[] args) { using (System.IO.StreamWriter sw = new System.IO.StreamWriter("C:\\log.txt", true)) { sw.WriteLine(DateTime.Now.ToString(&

C#创建Windows服务与安装-图解

1.创建windows服务项目 2.右键点击Service1.cs,查看代码, 用于编写操作逻辑代码 3.代码中OnStart用于执行服务事件 public partial class Service1 : ServiceBase { string logFilePath = ""; LogHelper logHelper; WendyWuBll bll = new WendyWuBll(); public Service1() { logFilePath = Configuratio

创建Windows服务简单流程

1.首先打开VS2010(或者其他版本),创建Windows服务项目 2.创建完成后切换到代码视图,代码中默认有OnStart和OnStop方法执行服务开启和服务停止执行的操作,下面代码是详细解释: 注意选择的是系统时间,不是winform中的时间. using System; using System.IO; usingSystem.ServiceProcess; using System.Text; usingSystem.Timers; namespaceTestService { pub

Topshelf创建Windows服务

使用Topshelf创建Windows服务 概述 Topshelf是创建Windows服务的另一种方法,老外的一篇文章Create a .NET Windows Service in 5 steps with Topshelf通过5个步骤详细的介绍使用使用Topshelf创建Windows 服务.Topshelf是一个开源的跨平台的宿主服务框架,支持Windows和Mono,只需要几行代码就可以构建一个很方便使用的服务宿主. 引用安装 1.官网:http://topshelf-project.c

使用Topshelf 5步创建Windows 服务 z

使用Topshelf创建Windows 服务简要的介绍了创建Windows服务的另一种方法,老外的一篇文章Create a .NET Windows Service in 5 steps with Topshelf通过5个步骤详细的介绍使用使用Topshelf创建Windows 服务.Topshelf是一个开源的跨平台的宿主服务框架,支持Windows和Mono,只需要几行代码就可以构建一个很方便使用的服务宿主. 1.Topshelf的代码托管在http://topshelf-project.c

(转)创建Windows服务(Windows Services)N种方式总结

转自:http://www.cnblogs.com/aierong/archive/2012/05/28/2521409.html 最近由于工作需要,写了一些windows服务程序,有一些经验,我现在总结写出来.目前我知道的创建创建Windows服务有3种方式:a.利用.net框架类ServiceBaseb.利用组件Topshelfc.利用小工具instsrv和srvany 下面我利用这3种方式,分别做一个windows服务程序,程序功能就是每隔5秒往程序目录下记录日志: a.利用.net框架类

在64位windows下使用instsrv.exe和srvany.exe创建windows服务

在64位windows下使用instsrv.exe和srvany.exe创建windows服务 在32位的windows下,包括windows7,windows xp以及windows 2003,都可以使用instsrv.exe和srvany.exe来创建自定义的windows服务.比如,我们有一个bat文件,用于将指定的程序作为服务进行启动,使用一般的工具都不可以进行此类工作,而使用由windows 2003的资源工具包windows toolkit中所带的instsrv就可以. 详细的用法这

使用Topshelf创建Windows 服务

本文转载:http://www.cnblogs.com/aierong/archive/2012/05/28/2521409.html b.利用组件Topshelf 本方式特点:代码简单,开源组件,Windows服务可运行多个实例 Topshelf是一个开源的跨平台的服务框架,支持Windows和Mono,只需要几行代码就可以构建一个很方便使用的服务. 官方网站:http://topshelf-project.com 第1步:引用程序集TopShelf.dll和log4net.dll 第2步:创

C#创建windows服务搭配定时器Timer使用实例(用代码做,截图版)

功能说明:C#创建一个windows服务,服务启动时D:\mcWindowsService.txt写入数据,服务运行期间每隔两秒写入当前时间.      原理这些就不说了,三语两语说不清楚,直接贴一个实例.不能贴图片!!那个压缩文里面是word文档!!有图有真相 1.建立空白项目 2.添加创建windows服务需要的引用,选择System.ServiceProcess.   3.创建服务类,继承ServiceBase,类的源代码在后面. 4. 添加windows服务的安装类. (1)在类名或者解