Windows服务在Visual Studio 以前的版本中叫NT服务,在VS.net启用了新的名称。用Visual C# 创建Windows服务不是一件困难的事,本文就将指导你一步一步创建一个Windows服务并使用它。这个服务在启动和停止时,向一个文本文件中写入一些文字信息。
第一步:创建服务框架
要创建一个新的 Windows 服务,可以从VS中 "新建项目"-"Windows"-" Windows 服务(Windows Service)",给工程一个新文件名,然后点击 确定。
项目自动添加了Service1.cs类:
其中各属性的含意是:
ü Autolog 是否自动写入系统的日志文件
ü CanHandlePowerEvent 服务时候接受电源事件
ü CanPauseAndContinue 服务是否接受暂停或继续运行的请求
ü CanShutdown 服务是否在运行它的计算机关闭时收到通知,以便能够调用 OnShutDown 过程
ü CanStop 服务是否接受停止运行的请求
ü ServiceName 服务名
第二步:向服务中增加功能
在 Service1.cs代码文件中我们可以看到两个函数 OnStart和OnStop。
OnStart函数在启动服务时执行,OnStop函数在停止服务时执行。在这里,当启动和停止服务时,向一个文本文件中写入一些文字信息,代码如下:
protected override void OnStart(string[] args)
{
FileStream fs = new FileStream(@"d:\mcWindowsService.txt" , FileMode.OpenOrCreate, FileAccess.Write);
StreamWriter m_streamWriter = new StreamWriter(fs);
m_streamWriter.BaseStream.Seek(0, SeekOrigin.End);
m_streamWriter.WriteLine("mcWindowsService: Service Started"+DateTime.Now.ToString()+"\n");
m_streamWriter.Flush();
m_streamWriter.Close();
fs.Close();
}
protected override void OnStop()
{
FileStream fs = new FileStream(@"d:\mcWindowsService.txt" , FileMode.OpenOrCreate, FileAccess.Write);
StreamWriter m_streamWriter = new StreamWriter(fs);
m_streamWriter.BaseStream.Seek(0, SeekOrigin.End);
m_streamWriter.WriteLine(" mcWindowsService: Service Stopped "+DateTime.Now.ToString()+"\n");
m_streamWriter.Flush();
m_streamWriter.Close();
fs.Close();
}
第三步: 添加安装程序类
选择Service1.cs的Design视图模式,属性栏会出现“添加安装程序”连接,双击。
这时项目中自动添加了一个新类 ProjectInstaller(安装类) ,并且有两个组件 ServiceProcessInstaller 和 ServiceInstaller。
单击 ServiceInstaller 组件并将 StartType 属性设置为适当的值:
ü Manual 服务安装后,必须手动启动。
ü Automatic 每次计算机重新启动时,服务都会自动启动。
ü Disabled 服务无法启动。
将serviceProcessInstaller类的Account属性改为 LocalSystem。这样,不论是以哪个用户登录的系统,服务总会启动。
第四步:创建服务安装程序(做法同普通windows项目的安装程序一样)
只需添加一下文件:
msiexec.exe(卸载文件)位于Windows\System32下
start.bat(启动服务命令):
echo off
net start "你的服务名称"
exit
stop.bat (停止服务命令):
echo off
net stop "你的服务名称"
exit
在"用户的程序菜单",分别制作这前三个文件的快捷方式到这里
右键单击”卸载服务“(msexec.exe对应的快捷方式)输入一串值:
其中"/x "后面对应和数值来自Setup项目的
还必须在Setup右键"添加"-“自定义操作”。如下图:分别添加自定义操作,在应用程序文件夹中主输出即可.
OK,生成安装项目就可以安装了!!!