什么是Windows Service应用程序?
Microsoft Windows 服务(即,以前的 NT 服务)使您能够创建在它们自己的 Windows 会话中可长时间运行的可执行应用程序。这些服务可以在计算机启动时自动启动,可以暂停和重新启动而且不显示任何用户界面。这些功能使服务非常适合在服务器 上使用,每当需要使用不会影响在同一台计算机上工作的其他用户的功能时也适用。还可以在不同于登录用户的特定用户帐户或默认计算机帐户的安全上下文中运行 服务。有关服务和 Windows 会话的更多信息,请参见 MSDN Library 的 Platform SDK 文档中的关于服务一节。
  注意: Visual Studio 标准版中不提供“Windows 服务”模板及相关功能。这时可以以编程方式编写服务.
创建并生成了应用程序后,可以通过运行命令行实用工具 InstallUtil.exe 并将路径传递给服务的可执行文件,或通过使用 Visual Studio 的部署功能来安装该应用程序。然后可以使用“服务控制管理器”启动、停止、暂停、继续和配置服务。这些任务中的许多种也可以在“服务器资源管理器”的“服务”节点中或通过使用 ServiceController 类来完成。
还可以通过,SC 实用工具控制Windows Service应用程序,参考 手动卸载windows的服务
服务应用程序与其他 Visual Studio 应用程序
服务应用程序与其他许多项目类型的功能在几个方面有所不同:

必 须将服务应用程序项目创建的已编译可执行文件安装在服务器上,此项目才能以有意义的方式运行。不能通过按 F5 或 F11 来调试或运行服务应用程序;不能立即运行服务或进入其代码。相反,必须安装和启动服务,然后将一个调试器附加到服务的进程中。有关更多信息,请参见 如何:调试 Windows 服务应用程序。
与一些类型的项目不同,对于服务应用程序,必须为其创建安装组件。安装组件在服务器上安装和注册服务,并用 Windows“服务控制管理器”为服务创建一个项。有关更多信息,请参见如何:将安装程序添加到服务应用程序。
服务应用程序的 Main 方法必须为项目包含的服务发出 Run 命令。Run 方法将服务加载到适当服务器上的“服务控制管理器”中。如果使用“Windows 服务”项目模板,系统将自动为您写入此方法。注意,加载服务与启动服务不同。有关更多信息,请参见下面的“服务生存期”。
Windows 服务应用程序在不同于登录用户的交互区域的窗口区域中运行。窗口区域是包含剪贴板、一组全局原子和一组桌面对象的安全对象。由于 Windows 服务的区域不是交互区域,因此 Windows 服务应用程序中引发的对话框将是不可见的,并且可能导致程序停止响应。同样,错误信息应记录在 Windows 事件日志中,而不是在用户界面中引发。

.NET Framework 支持的 Windows 服务类不支持与交互区域(即登录用户)进行交互。同时,.NET Framework 不包含表示区域和桌面的类。如果 Windows 服务必须与其他区域进行交互,则需要访问非托管的 Windows API。有关更多信息,请参见 Platform SDK 文档中的窗口区域和桌面。

设计 Windows 服务与用户或其他区域的交互时必须非常小心,应考虑某些情况,例如没有登录的用户或用户具有一组意外的桌面对象的情况。在某些情况下,编写一个在用户控制下运行的 Windows 应用程序可能更为妥当。
Windows 服务应用程序在各自的安全上下文中运行,并且在用户登录到安装有该程序的 Windows 计算机之前启动。应仔细计划在哪些用户帐户内运行服务;在系统帐户下运行的服务比在用户帐户下运行的服务具有更多的权限和特权。
服务生存期
服务在其生存期内要经历几个内部状态。首先,将服务安装在将要运行它的系统上。此过程执行服务项目的安装程序,并将服务加载到该计算机的“服务控制管理器”中。“服务控制管理器”是由 Windows 提供的管理服务的核心实用工具。
服务加载后,必须启动。启动服务使服务开始运行。可以从“服务控制管理器”、从“服务器资源管理器”或通过调用 Start 方法从代码启动服务。Start 方法将处理传递给应用程序的 OnStart 方法并处理您在该处定义的任何代码。
运行的服务可以以这种状态无限期地存在下去,直到它被停止或暂停或者计算机关闭。服务可以以三种基本状态之一存在:Running、Paused 或 Stopped。服务还可以报告挂起命令的状态:ContinuePending、PausePending、StartPending 或 StopPending。这些状态指示命令已经发出(如暂停正在运行的服务的命令),但尚未执行。您可以查询 Status 以确定服务的状态,也可以使用 WaitForStatus 在以上任一状态出现时执行操作。
可以从“服务控制管理器”、从“服务器资源管理器”或通过从代码调用方法来暂停、停止或继续服务。每种操作都可以调用服务中的一个相关过程(OnStop、OnPause 或 OnContinue),在其中可以定义当服务状态更改时所执行的其他处理。
服务类型
在 Visual Studio 中使用 .NET Framework 可以创建两种类型的服务。进程中的唯一服务被指定为 Win32OwnProcess 类型。与其他服务共享进程的服务被指定为 Win32ShareProcess 类型。可通过查询 ServiceType 属性检索服务类型。
如果查询不是在 Visual Studio 中创建的现有服务,则偶尔还可能看到其他服务类型。有关这些内容的更多信息,请参见 ServiceType。
服务和 ServiceController 组件
ServiceController 组件用于连接到已安装的服务并操作其状态;使用 ServiceController 组件可以启动和停止服务、暂停和继续其运行以及将自定义命令发送到服务。但是,在创建服务应用程序时不需使用 ServiceController 组件。实际上,多数情况下,ServiceController 组件存在于与定义服务的 Windows 服务应用程序不同的应用程序中,如服务的监视器程序中。

有关 ServiceController 组件的更多信息,请参见 监视 Windows 服务。

部署和安装服务
Visual Studio 随附有安装组件,这些组件可以安装与服务应用程序相关的资源。安装组件在正在安装到的系统上注册一项单个的服务,并使“服务控制管理器”知道该服务的存在。

在将安装程序添加到应用程序之后,下一步是创建安装项目,该项目将安装已编译的项目文件并运行安装服务所需的安装程序。若要创建完整的安装项目,您必须将服务项目的输出添加到该安装项目,然后添加自定义操作以安装您的服务。有关安装项目的更多信息,请参见安装项目。有关自定义操作的更多信息,请参见演练:创建自定义操作。

要求
服务必须创建在“Windows 服务”应用程序项目或其他支持 .NET Framework 的项目中,而该项目在从 ServiceBase 类生成和继承时创建 .exe 文件。
包含 Windows 服务的项目必须有该项目及其服务的安装组件。这可以从“属性”窗口轻松实现。有关更多信息,请参见如何:将安装程序添加到服务应用程序。
本文来自CSDN博客,出处:http://blog.csdn.net/Wind_Eagle/archive/2008/04/18/2303415.aspx

转载于:https://www.cnblogs.com/kivenhou/archive/2009/11/02/1594542.html

什么是Windows Service应用程序?(转)相关推荐

  1. 创建一个Windows Service应用程序

    创建一个Windows Service应用程序 下载本文代码 见资源 正是由于.NET Framework的出现,才使你能够构建出在系统重新启动时自动运行的.无人参与的(unattended)应用程序 ...

  2. C#创建和部署Windows Service程序

      接下来这里我对Windows Service程序的创建.部署等方面做简单描述. 前言   这里首先有个问题,什么是Windows Service,也就是我们Windows服务.微软的官方定义是这样 ...

  3. [置顶] Windows服务(Windows Service,system权限)程序显示界面与用户交互(xp,win7通用)

    [置顶] [置顶] Windows服务(Windows Service,system权限)程序显示界面与用户交互(xp,win7通用) 2012-08-20 15:04 673人阅读 评论(1) 收藏 ...

  4. Windows服务(Windows Service,system权限)程序显示界面与用户交互(xp,win7通用)

    1.VC2008中编写"Windows服务"(Windows Service)程序 源码资源下载: http://download.csdn.net/detail/stony198 ...

  5. Windows Service编程

    Abstract   本文主要介绍 Windows service 的编程模式和 SCM 的相关功能. Content 基础知识 What is Windows Service SCM Service ...

  6. .NET开发Windows Service程序 - Topshelf

    在实际项目开发过程中,会经常写一些类似定时检查,应用监控的应用.这类应用在windows平台通常都会写成window service程序. 在百度上搜索一下'c#开发windows service', ...

  7. 【windows service】C# 创建Windows Service(Windows服务)程序

    C# 创建Windows Service(Windows服务)程序 很多年前大概08年做了一个windows桌面程序推送邮件给用户的程序,然后通过windows 计划任务每隔N分钟重复执行. 今天闲暇 ...

  8. C#开发Windows Service程序

    Windows Service概念介绍 Windows Service,也称Windows服务,是32位Windows操作系统中一种长期运行的后台程序.它们长期后台运行,没有用户界面,默默无闻,但它们 ...

  9. C# 创建Windows Service(Windows服务)程序

    工具: Visual Studio Community 2015 写在前面: Windows可以在后台做一些任务,今天分享下Windows Service创建.安装.调试的方法以及一些异常问题的处理 ...

最新文章

  1. 记一次 react 15.3.1 老项目升级到 react 16.7.0 之路
  2. Ubuntu 18.04 美化mac主题
  3. 解题报告 『[NOI2014]起床困难综合症(位运算)』
  4. 钮扣电池电压电量_纽扣厂
  5. 01 Python变量和数据类型
  6. 用js拼html写下拉框,js实现下拉框效果(select)
  7. JDK源码(19)-Void
  8. C语言 VS输入输出字符设置
  9. 局部临时表 全局临时表 表变量
  10. java设置子线程优先级_Java 实例 - 线程优先级设置
  11. Improved Word Representation Learning with Sememes
  12. springboot整合swagger(高版本)异常
  13. 低代码发展趋势解读|低代码成为企业数字化转型“加速器”
  14. unity设置手机横屏方法和相关问题
  15. Python基础 模块化编程(模块的导入)
  16. 前后端报文传输加密方案
  17. git 配置winmerge
  18. Thymeleaf设置固定值属性
  19. 计算机连接打印机用户数量修改,win7系统下局域网如何限制每台打印机的使用成员数量...
  20. python中占位符解释

热门文章

  1. MySQL数据类型(最大值 和 最小值)
  2. BZOJ 2039: [2009国家集训队]employ人员雇佣
  3. HTML 5常用的交互元素————内容交互元素(2)
  4. nboot,eboot和uboot
  5. 创业团队:找对人就成功了90%
  6. 软件缘-网友个人精心打造的精品软件收集
  7. Origami – 用于 Quartz 的免费的交互设计框架
  8. 《101 Windows Phone 7 Apps》读书笔记-PASSWORDS SECRETS
  9. Vue.nextTick()理解
  10. 关于《大道至简》第一章的收获