发布window任务

来源:互联网 发布:醉鹅娘 知乎 编辑:程序博客网 时间:2024/05/09 22:51
本文介绍如何创建安装项目的 Windows 服务应用程序 (以前称为"NT 服务")。若要执行此操作,必须首先创建一个解决方案,其中包含一个项写入应用程序日志中的一个简单的 Windows 服务项目。然后安装窗口服务的解决方案中添加安装项目。最后,您可以启动该服务。您可以通过使用开始菜单中的管理工具文件夹中的服务项启动的服务。

要求

下面的列表列出了推荐使用的硬件、 软件、 网络基础结构和服务包,您必须具有:
  • Microsoft Windows 2000、 Windows XP、 Windows Server 2003 或更高版本 Microsoft 操作系统安装.NET Framework 使用
  • Microsoft Visual Studio.NET 企业、 Microsoft Visual Studio.NET 企业级结构设计、 Microsoft Visual Studio 2005 中,或 Microsoft Visual Studio 2008。
本文假定您熟悉 Windows 服务。如果您不熟悉 Windows 服务,请参阅本文的参考部分中的第一个引用。

本文还假定您使用安装和运行此服务的用户帐户具有的权限,您必须安装和启动服务,并还具有的权限,您必须具有访问事件日志。

为 Windows 服务创建安装项目

本部分介绍如何创建 Windows 服务项目,以及如何使用已编译的安装项目来安装 Windows 服务。

创建 Windows 服务项目

  1. 启动 Microsoft Visual Studio。
  2. 文件菜单上,指向新建,然后单击项目
  3. 单击项目类型下的Visual C# 项目,然后单击模板下的Windows 服务

    注意:在 Visual Studio 2005年或 Visual Studio 2008 中,展开Visual C#项目类型下,单击Windows,然后单击模板下的Windows 服务
  4. 名称文本框中,键入LogWriterService ,然后在位置文本框中键入C:\单击确定
  5. 在解决方案资源管理器中,用鼠标右键单击Service1.cs,然后单击查看代码
  6. OnStart事件处理程序中,下面的代码替换注释:
    EventLog.WriteEntry("My simple service started.");
  7. 在解决方案资源管理器中,双击 $ Service1.cs
  8. 在代码编辑器窗口中用鼠标右键单击 设计视图,然后单击 属性
  9. 在属性窗格中单击 添加安装程序 链接。
  10. 在为 ServiceInstaller1 属性窗格更改 ServiceName服务 1 的属性。
  11. 在设计视图中的代码编辑器窗口中单击 $ ServiceProcessInstaller1
  12. 在属性窗格中将 帐户 属性改为 本地系统LocalService网络服务 值是仅在 Microsoft Windows XP 中可用)。

使用已编译的安装项目来安装 Windows 服务

完成配置的 Windows 服务项目上一节中的步骤后,按照上述步骤以添加部署项目,以便可以安装服务应用程序打包的服务应用程序:
  1. 将新项目添加到 LogWriterService 项目。若要执行此操作,请执行以下步骤:
    1. 在解决方案资源管理器中,用鼠标右键单击解决方案 LogWriterService (项目 1),指向添加,然后单击新建项目
    2. 单击项目类型下的安装和部署项目,然后单击模板下的安装项目
    3. 名称文本框中,键入ServiceSetup
    4. 中的位置文本框中,键入C:\ ,然后单击确定
  2. 部署项目什么对说包。若要执行此操作,请执行以下步骤:
    1. 在解决方案资源管理器中,用鼠标右键单击ServiceSetup,指向添加,然后单击项目输出
    2. 添加项目输出组对话框中,在项目框中,单击LogWriterService
    3. 单击主输出,然后再单击确定
  3. 正确安装,添加仅主输出。若要添加自定义操作,请执行以下步骤:
    1. 在解决方案资源管理器中,用鼠标右键单击ServiceSetup,指向视图,然后单击自定义操作
    2. 右键单击自定义操作,然后单击添加自定义操作
    3. 单击应用程序文件夹,然后单击确定
    4. 单击主输出来自 LogWriterService (活动),然后再单击确定

      请注意主输出显示在安装提交回滚卸载
  4. 默认情况下,安装项目不会包括在生成配置中。若要生成解决方案时,使用下列方法之一:
    • 方法 1
      1. 用鼠标右键单击LogWriterService,然后单击生成
      2. 用鼠标右键单击ServiceSetup,然后单击生成
    • 方法 2
      1. 生成菜单中,单击配置管理器,以生成整个解决方案。
      2. 单击以选中生成复选框中为 ServiceSetup。
      3. 按 F7 键生成整个解决方案。当生成解决方案时,您必须完成安装软件包所提供的服务。
  5. 要安装新生成的服务,请用鼠标右键单击ServiceSetup,然后单击安装
  6. ServiceSetup对话框中,单击下一步三次。请注意,该服务安装期间,会出现一个进度栏。
  7. 安装该服务后,单击关闭

完整的代码列表

Service1.cs

using System;using System.Collections;using System.ComponentModel;using System.Data;using System.Diagnostics;using System.ServiceProcess;namespace LogWriterService{public class Service1 : System.ServiceProcess.ServiceBase{/// <summary> /// Required designer variable./// </summary>private System.ComponentModel.Container components = null;public Service1(){// The Windows.Forms Component Designer must have this call.InitializeComponent();// TODO: Add any initialization after the InitComponent call}// The main entry point for the processstatic void Main(){System.ServiceProcess.ServiceBase[] ServicesToRun;// More than one user service may run in the same process. To add// another service to this process, change the following line to// create a second service object. For example,////   ServicesToRun = New System.ServiceProcess.ServiceBase[] {new Service1(), new MySecondUserService()};//ServicesToRun = new System.ServiceProcess.ServiceBase[] { new Service1() };System.ServiceProcess.ServiceBase.Run(ServicesToRun);}/// <summary> /// Required method for Designer support - do not modify /// the contents of this method with the code editor./// </summary>private void InitializeComponent(){components = new System.ComponentModel.Container();this.ServiceName = "Service1";}/// <summary>/// Clean up any resources that are being used./// </summary>protected override void Dispose( bool disposing ){if( disposing ){if (components != null) {components.Dispose();}}base.Dispose( disposing );}/// <summary>/// Set things in motion so your service can do its work./// </summary>protected override void OnStart(string[] args){EventLog.WriteEntry("My simple service started.");} /// <summary>/// Stop this service./// </summary>protected override void OnStop(){// TODO: Add code here to perform any tear-down necessary to stop your service.}}}

验证它正常工作

  1. 在控制面板中,双击管理工具,然后双击服务
  2. Service1,鼠标右键单击,然后单击开始
  3. 使用下列方法之一验证在事件日志中记录一个事件:
    • 方法 1
      1. 在控制面板中,双击管理工具,然后双击事件查看器
      2. 在左窗格中,单击应用程序日志,然后找到您的服务从右窗格中的事件日志。
    • 方法 2
      1. 在服务器资源管理器中,展开服务器展开ComputerName事件日志、 扩展应用程序,,展开然后展开服务 1记住Service1是类,该服务的名称。因此,服务 1用作应用程序的名称。(它是超出了这篇文章,介绍如何自定义名称的范围。
      2. 将光标移过的日志条目。从顶部的第二项应显示为"我的简单服务开始"。

疑难解答

框架 SDK 文档声明如下:
服务应用程序项目创建的已编译可执行文件必须安装在服务器上,该项目才能以有意义的方式。您不能调试或运行服务应用程序,通过按 F5 或 F11。立即不能到其代码中运行的服务或步骤。相反,必须安装和启动您的服务,然后将一个调试器附加到该服务的进程。
有关详细信息,请访问下面的 Microsoft 开发人员网络 (MSDN) Web 站点:调试 Windows 服务应用程序http://msdn2.microsoft.com/en-us/library/aa984342(VS.71).aspx
0 0
原创粉丝点击