NET编写简单的Windows 服务应用程序
2009-11-06 17:32
295 查看
创建服务
创建并配
在“文件”
菜
单上单击“新建项目”
。
打开“新建项目”
对
话框。
在 Visual C#项目模板的列表中选择“Windows 服务”
项目,并将其命名为 MyNewService
。单击“确定”
。
单击设计器选择 Service1
。然后,在“属性”
窗口中,将 Service1
的 ServiceName
和“(名称)”
属性设置为“MyNewService”
。
将
AutoLog
属性设置为 true
。
在“视图”
菜单中单击“代码”
以打开代码编辑器。编辑 Main
方法以创建“MyNewService”
的实
例。当在步骤 3 中重命名服务时,未在 Main
方法中修改类名。在 Visual C# 应用程序中,Main
方法分别位于 Program.cs 和
Program.js 文件中。
C#
向服务添加功能
在下一节中,将自定义事件日志添加到 Windows
服务中。事件日志与 Windows 服务没有任何形式的关联。此处,EventLog
组件用作可以添加到 Windows 服务的组件类型的示例。有关自定义事件日志的更多信息,请参见如何:创建和移除自定义
事件日志
。
中,右击“Service1.cs”
,并选择“视图设计器”
。
从“工具箱”
的“组件”
选项卡,将 EventLog
组件拖到设计器中。
在“解决方案资源管理器”
中,右击“Service1.cs”
,并选择“查看代码”
。
编
辑构造函数以定义一个用户事件日志。
C#
定义服务启动时发生的情
在代码编辑器中,找到创建项目时已自动重写的 OnStart
方法,然后编写代码来确定当服务开始运行时发生的情况:
C#
代码编辑器中,从“方法名称”
下拉列表中选择 OnStop
过程,该过程在创建项目时已自动重写。编写代码以确定服务停止时发生的情况:
C#
还可以重写 OnPause
、OnContinue
和 OnShutdown
方法来定义对组件的其他处理。
下面的代码显示重
写 OnContinue
方法时代码的情况:
C#
安装 Windows 服务时必须执行某些自定义操作,这可以由 Installer
类来完成。Visual Studio 可以专门为 Windows 服务创建这些安装程序并将它们添加到项目中。
中,右击“Service1.cs”
,
并选择“视图设计器”
。
单击设计器的背景以选择服务本身,而不是它的
任何内容。
设计器具有焦点时,右击然后单击“添加安装程序”
。
默
认情况下,向您的项目添加一个包含两个安装程序的组件类。将该组件命名为 ProjectInstaller
,
它包含的安装程序分别是服务的安装程序和服务关联进程的安装程序。
在“ProjectInstaller”
的“设计”
视图中,单击“ServiceInstaller1”
或“serviceInstaller1”
。
在“属
性”
窗口中,将 ServiceName
属性设置为“MyNewService”
。
将 StartType
属性设置为 Automatic
。
在
设计器中单击“ServiceProcessInstaller1”
。将 Account
属性设置为 LocalService
。
这将使得在本地服务帐户上安装和运行该服务。
中,右击您的项目,然后单击“属性”
。
出现项目的“属性设计器”
。
从“应用程序”页的“启动对象”
列表中单击“MyNewService”
。
按
Ctrl+Shift+B 生成项目。
生成项目后,便可以对其进行部署了。安装项目将安装已编译的项目
文件并运行要运行 Windows 服务所需的安装程序。若要创建完整的安装项目,您必须将项目输出“MyNewService.exe”
添
加到安装项目,然后添加自定义操作来安装“MyNewService.exe”
。
中,右击选择解决方案,指向“添加”
,
然后单击“新建项目”
。
在“项目
类型”
窗格中选择“安装和部署项目”
文件夹。
在“模板”
窗格中选择“安装项目”
。将项目命名为 MyServiceSetup
。单击“确定”
。
安
装项目随即添加到解决方案。
然后,将 Windows 服务项目的输出 MyNewService.exe
添加到安装项目中。
中,右击“MyServiceSetup”
,指向“添加”
,然后单击“项目输出”
。
出现“添加项目输出组”
对话
框。
并且在“项目”
框中选择了“MyNewService”
。
在
列表中,选择“主输出”
,再单击“确定”
。
MyNewService
的主输出的项目项被添加到安装项目中。
现
在添加自定义操作以安装 MyNewService.exe 文件。
向安装项
在“解决方案资
源管理器”
中右击安装项目,指向“视图”
,再选择“自
定义操作”
。
出现“自定义操作”
编辑器。
在“自定义操作”
编辑器中右击“自定义操作”
节点,再单击“添加自定义操作”
。
出现“选择项目中的项”
对
话框。
在列表中双击“应用程序文件夹”
以将其打开,选择“MyNewService 的主输出(活动)”
,再单击“确定”
。
主
输出被添加到自定义操作的所有四个节点:“安装”
、“提交”
、“回滚”
和“卸载”
。
在“解决方案资源管理器”
中,右击“MyServiceSetup”
项
目并选择“生成”
。
要安装“MyNewService.exe”
,请右击“解决方案资
源管理器”
中的安装项目,再选择“安装”
。
完成“安装向导”
中的步骤。生成并保存您的解决方案。
过执行下列操作之一打开“服务控制管理器”:
在 Windows XP 和 2000 专业版中,在桌面上右击“我的电脑”
,然后单击“管理”
。在“计算机管理”
控制台中,展开“服务和应用程序”
节点。
-
或 -
在 Windows Server 2003 和 Windows 2000 Server 中,单击“开始”
,指向“程序”
,单击“管理工具”
,然后单击“服务”
。
现
在应该看到“MyNewService”
列在窗口的“服务”
区
域中。
从列表中选择您的服务,右击该服务,然后单击“启动”
。
右
击该服务,再单击“停止”
。
开“服务器资源管理器”
并访问“事件日志”
节点。
找到 MyNewLog
的列表并展开它。您应该看到服务所执行操作的项。
菜单上打开“控制面板”
并单击“添加或删除程序”
,然后找到您的服务并单击“卸载”
。
还
可以通过右击 .msi 文件的程序图标并选择“卸载”
来卸载该程序。
创建并配
置服务
在“文件”菜
单上单击“新建项目”
。
打开“新建项目”
对
话框。
在 Visual C#项目模板的列表中选择“Windows 服务”
项目,并将其命名为 MyNewService
。单击“确定”
。
说 明: |
---|
项目模板自动添加从 System.ServiceProcess. . :: . ServiceBase 继承的名为 Service1 的组件类。 |
。然后,在“属性”
窗口中,将 Service1
的 ServiceName
和“(名称)”
属性设置为“MyNewService”
。
将
AutoLog
属性设置为 true
。
在“视图”
菜单中单击“代码”
以打开代码编辑器。编辑 Main
方法以创建“MyNewService”
的实
例。当在步骤 3 中重命名服务时,未在 Main
方法中修改类名。在 Visual C# 应用程序中,Main
方法分别位于 Program.cs 和
Program.js 文件中。
C#
static void Main() { System.ServiceProcess.ServiceBase[] ServicesToRun; // Change the following line to match. ServicesToRun = new System.ServiceProcess.ServiceBase[] { new MyNewService() }; System.ServiceProcess.ServiceBase.Run(ServicesToRun); }
向服务添加功能
在下一节中,将自定义事件日志添加到 Windows
服务中。事件日志与 Windows 服务没有任何形式的关联。此处,EventLog
组件用作可以添加到 Windows 服务的组件类型的示例。有关自定义事件日志的更多信息,请参见如何:创建和移除自定义
事件日志
。
将自定义事件日志功能添加到服务中
在“解决方案资源管理器”中,右击“Service1.cs”
,并选择“视图设计器”
。
从“工具箱”
的“组件”
选项卡,将 EventLog
组件拖到设计器中。
在“解决方案资源管理器”
中,右击“Service1.cs”
,并选择“查看代码”
。
编
辑构造函数以定义一个用户事件日志。
C#
public MyNewService() { InitializeComponent(); if (!System.Diagnostics.EventLog.SourceExists("MySource" )) { System.Diagnostics.EventLog.CreateEventSource( "MySource" ,"MyNewLog" ); } eventLog1.Source = "MySource" ; eventLog1.Log = "MyNewLog" ; }
定义服务启动时发生的情
况
在代码编辑器中,找到创建项目时已自动重写的 OnStart方法,然后编写代码来确定当服务开始运行时发生的情况:
C#
protected override void OnStart(string [] args) { eventLog1.WriteEntry("In OnStart" ); }
说 明: |
---|
服务应用程序设计为长时间运行。因此,它通常轮询或监视系统中的情况。监视是在 OnStart 方法中设置的。但是,OnStart 实际上不进行监视。服务的操作开始之后,OnStart 方法必须返回到操作系统。它不能始终循环或阻止。若要设置简单的轮询机制,可以使用 System.Timers. . :: . Timer 组件。在 OnStart 方法中,可以设置组件上的参数,然后将 Enabled 属性设置为 true 。 然后,计时器将在代码中周期性地引发事件,此时,服务可以进行其监视工作。 |
定义服务停止时发生的情况
在代码编辑器中,从“方法名称”
下拉列表中选择 OnStop
过程,该过程在创建项目时已自动重写。编写代码以确定服务停止时发生的情况:
C#
protected override void OnStop() { eventLog1.WriteEntry("In onStop." ); }
还可以重写 OnPause
、OnContinue
和 OnShutdown
方法来定义对组件的其他处理。
定义服务的其他操作
对于要处理的方法,重写适当的方法并定义要发生的情况。下面的代码显示重
写 OnContinue
方法时代码的情况:
C#
protected override void OnContinue() { eventLog1.WriteEntry("In OnContinue." ); }
安装 Windows 服务时必须执行某些自定义操作,这可以由 Installer
类来完成。Visual Studio 可以专门为 Windows 服务创建这些安装程序并将它们添加到项目中。
为服务创建安装程序
在“解决方案资源管理器”中,右击“Service1.cs”
,
并选择“视图设计器”
。
单击设计器的背景以选择服务本身,而不是它的
任何内容。
设计器具有焦点时,右击然后单击“添加安装程序”
。
默
认情况下,向您的项目添加一个包含两个安装程序的组件类。将该组件命名为 ProjectInstaller
,
它包含的安装程序分别是服务的安装程序和服务关联进程的安装程序。
在“ProjectInstaller”
的“设计”
视图中,单击“ServiceInstaller1”
或“serviceInstaller1”
。
在“属
性”
窗口中,将 ServiceName
属性设置为“MyNewService”
。
将 StartType
属性设置为 Automatic
。
在
设计器中单击“ServiceProcessInstaller1”
。将 Account
属性设置为 LocalService
。
这将使得在本地服务帐户上安装和运行该服务。
安全说明: |
---|
LocalService 帐户用作本地计算机上的非特权用户,向任何远程服务器显示匿名凭据。使用其他帐户时需要特别小心,因此它们具有较高的特权,会增加您受到恶意代码攻击的风 险。 |
生成服务项目
在“解决方案资源管理器”中,右击您的项目,然后单击“属性”
。
出现项目的“属性设计器”
。
从“应用程序”页的“启动对象”
列表中单击“MyNewService”
。
按
Ctrl+Shift+B 生成项目。
生成项目后,便可以对其进行部署了。安装项目将安装已编译的项目
文件并运行要运行 Windows 服务所需的安装程序。若要创建完整的安装项目,您必须将项目输出“MyNewService.exe”
添
加到安装项目,然后添加自定义操作来安装“MyNewService.exe”
。
为服务创建安装项目
在“解决方案资源管理器”中,右击选择解决方案,指向“添加”
,
然后单击“新建项目”
。
在“项目
类型”
窗格中选择“安装和部署项目”
文件夹。
在“模板”
窗格中选择“安装项目”
。将项目命名为 MyServiceSetup
。单击“确定”
。
安
装项目随即添加到解决方案。
然后,将 Windows 服务项目的输出 MyNewService.exe
添加到安装项目中。
向安装项目添加 MyNewService.exe
在“解决方案资源管理器”中,右击“MyServiceSetup”
,指向“添加”
,然后单击“项目输出”
。
出现“添加项目输出组”
对话
框。
并且在“项目”
框中选择了“MyNewService”
。
在
列表中,选择“主输出”
,再单击“确定”
。
MyNewService
的主输出的项目项被添加到安装项目中。
现
在添加自定义操作以安装 MyNewService.exe 文件。
向安装项
目添加自定义操作
在“解决方案资源管理器”
中右击安装项目,指向“视图”
,再选择“自
定义操作”
。
出现“自定义操作”
编辑器。
在“自定义操作”
编辑器中右击“自定义操作”
节点,再单击“添加自定义操作”
。
出现“选择项目中的项”
对
话框。
在列表中双击“应用程序文件夹”
以将其打开,选择“MyNewService 的主输出(活动)”
,再单击“确定”
。
主
输出被添加到自定义操作的所有四个节点:“安装”
、“提交”
、“回滚”
和“卸载”
。
在“解决方案资源管理器”
中,右击“MyServiceSetup”
项
目并选择“生成”
。
安装 Windows 服务
若要安装“MyNewService.exe”
,请右击“解决方案资
源管理器”
中的安装项目,再选择“安装”
。
完成“安装向导”
中的步骤。生成并保存您的解决方案。
启动和停止服务
通过执行下列操作之一打开“服务控制管理器”:
在 Windows XP 和 2000 专业版中,在桌面上右击“我的电脑”
,然后单击“管理”
。在“计算机管理”
控制台中,展开“服务和应用程序”
节点。
-
或 -
在 Windows Server 2003 和 Windows 2000 Server 中,单击“开始”
,指向“程序”
,单击“管理工具”
,然后单击“服务”
。
说 明: |
---|
在 Windows NT 4.0 版中,可以从“控制面板”中打开此对话框。 |
在应该看到“MyNewService”
列在窗口的“服务”
区
域中。
从列表中选择您的服务,右击该服务,然后单击“启动”
。
右
击该服务,再单击“停止”
。
验证服务的事件日志输出
打开“服务器资源管理器”
并访问“事件日志”
节点。
说 明: |
---|
Visual Studio 标准版中不提供“Windows 服务” 模板及相关功能。 |
的列表并展开它。您应该看到服务所执行操作的项。
卸载服务
在“开始”菜单上打开“控制面板”
并单击“添加或删除程序”
,然后找到您的服务并单击“卸载”
。
还
可以通过右击 .msi 文件的程序图标并选择“卸载”
来卸载该程序。
说 明: |
---|
如果服务是安装在 Windows 2000 上的,则必须重新启动系统才能重新安装服务。在 Windows 2000 中,服务在系统重新启动之前不会完全删除。 |
相关文章推荐
- asp.net中编写 windows 服务程序以及调用
- windows 8.1 64位PC,Visual Studio 2013 Ultimate,C# .NET 4.0,环境下编写windows服务,亲测成功!
- 如何在asp.net中编写 Windows 服务程序 [转]
- .net windows服务程序编写总结
- 使用windows 窗体应用程序编写简单的阅读器
- Windows CE .NET中实现服务的简单过程
- 如何在asp.net中编写 Windows 服务程序 Visual Studio编写 Windows 服务
- 使用 Windows CardSpace 保证您的 ASP.NET 应用程序和 WCF 服务的安全
- wcf服务库 在 asp.net iis5 和 windows服务中的托管 ,最简单快速的方法
- C# Windows 服务 的简单程序的编写,安装 和 卸载
- 一个简单的Windows服务应用程序范例
- 在 Windows XP Professional 上用 Visual Studio .NET 编写应用程序
- 在 Windows XP Professional 上用 Visual Studio .NET 编写应用程序
- 在 Windows XP Professional 上用 Visual Studio .NET 编写应用程序
- 在 Windows XP Professional 上用 Visual Studio .NET 编写应用程序
- 在 C# 平台中, 编写 Windows 服务的简单例子
- 用C#把批处理文件改为windows系统服务(简单的C#编写系统服务教程)
- 如何在 VisualC # .NET 和 VisualC # 2005 中创建安装项目用于 Windows 服务应用程序
- .NET Framework 4.6 and 4.5 > 开发指南 > 使用 WCF 的面向服务的应用程序 > Windows Communication Foundation (WCF)
- 在 Windows XP Professional 上用 Visual Studio .NET 编写应用程序