C#编写Windows服务

一.Windows服务介绍:

一个Windows服务程序是在Windows操作系统下能完成特定功能的可执行的应用程序。Windows服务程序虽然是可执行的,但是它不像一 般的可执行文件通过双击就能开始运行了,它必须有特定的启动方式。这些启动方式包括了自动启动和手动启动两种。对于自动启动的Windows服务程序,它 们在Windows启动或是重启之后用户登录之前就开始执行了。只要你将相应的Windows服务程序注册到服务控制管理器(Service Control Manager)中,并将其启动类别设为自动启动就行了。而对于手动启动的Windows服务程序,你可以通过命令行工具的NET START 命令来启动它,或是通过控制面板中管理工具下的服务一项来启动相应的Windows服务程序。

同样,一个Windows服务程序也不能像一般的应用程序那样被终止。因为Windows服务程序一般是没有用户界面的,所以你也要通过命令行工具或是下
面图中的工具来停止它,或是在系统关闭时使得Windows服务程序自动停止。因为Windows服务程序没有用户界面,所以基于用户界面的API函数对
其是没有多大的意义。为了能使一个Windows服务程序能够正常并有效的在系统环境下工作,程序员必须实现一系列的方法来完成其服务功能。
Windows服务程序的应用范围很广,典型的Windows服务程序包含了硬件控制、应用程序监视、系统级应用、诊断、报告、Web和文件系统服务等功
能。

和Windows服务程序相关的命名空间涉及到以下两个:System.ServiceProcess 和System.Diagnostics。

二.创建Windows服务:

在VS上新建Windows服务项目:右键添加服务按照程序

选择serviceProcessInstaller1>修改里面的属性:

选择serviceInstaller1,修改里面的属性:

1.Service启动属性:

Manual 服务安装后,必须手动启动。

Automatic 每次计算机重新启动时,服务都会自动启动。

Disabled 服务无法启动。

安装完成之后也可以在系统服务管理器中,设置相应Service的属性或启动方式等

计算机管理 -> 服务和应用程序  -> 服务  -> ...

 public partial class Service1 : ServiceBase
    {
        public Service1()
        {
            InitializeComponent();
        }

        protected override void OnStart(string[] args)
        {
            Thread.Sleep(10000); //休息是为了附加到进程进行断点调试
            //开始服务的业务逻辑
        }

        protected override void OnStop()
        {
        }
    }

完成后编译通过则进行服务的安装。

三.安装服务

以管理员身份运行cmd控制台应用程序 ,输入:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe C: \Users\YANGYIHE\Desktop\C3.Apns\C3.Apns.PushServer\bin\Debug\服务.exe

InstallUtil.exe的所在目录 Windows服务所在目录  //注意中间有空格

四.卸载服务:

以管理员身份运行cmd控制台应用程序,输入:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe
-u C:\Users\YANGYIHE\Desktop\C3.Apns\C3.Apns.PushServer\bin\Debug\服务.exe

InstallUtil.exe的所在目录 -u Windows服务所在目录 //使用-u命令卸载

时间: 2024-10-19 21:59:12

C#编写Windows服务的相关文章

使用C语言编写windows服务一般框架

原文:使用C语言编写windows服务一般框架 编写windows服务和编写windows应用程序一样,有一些回调函数必须填写且向windows 服务管理器(service manager)进行注册,否则会导致服务启动失败.因近期写个服务,其中遇到一些有问题,有部分内容想和大家分享一下,请大家指正. windows服务一般框架代码如下: #include <Windows.h> #include <tchar.h> VOID WINAPI ServiceHandler(DWORD

c# 编写windows 服务,并制作安装包

对服务的认识有很多个阶段. 第一阶段:当时还在用c++,知道在一个进程里while(True){},然后里面做很多很多事情,这就叫做服务了,界面可能当时还用Console控制台程序. 第二阶段:知道了服务要在后台执行,一般不会有界面显示,并且开机自启动,于是隐藏Console控制台界面,并且通过使用SC CREATE 将exe变为服务,并且达到开机自启动的目的.这时候还是c++ 阶段. 第三阶段:因项目需求接触c#,发现有个叫项目模板专门制作windows 服务,尝试了下,感觉还不错,省事了许多

编写Windows服务疑问1:操作过程

Windows 服务开发平时不太受人关注,毕竟那是高大上的项目类型,平常需求也用不上,很多老掉牙的家伙也只知有WinForm,仍不知有WPF,更别说Windows 服务了,正如淘渊明所写的,“不知有汉,无论魏晋”. 通常,就算要让程序开机启动,多数也只考虑设置一个启动项,也很少去想到开发Windows服务.如果程序需要自动启动,并且希望在后台完成一些东东,其实使用Windows服务也不错的. 正因为用的人少,那么说的人更少了,使得不了解它,想学又找不到资料的人也多.没事,老周没什么资本,唯一值得

用c语言编写windows服务

主要是根据从www.vcbase.com上看到的一篇文章来做这个windows服务的.但是这篇文章一些关键代码并没有贴出来,然而有心人根据作者的描述实现了代码,并且完整的贴了出来,地址是在 http://www.2cto.com/kf/201111/111990.html 我创建的是一个空项目,这个默认的应该是控制台项目.服务的主函数是main而不是winmain,要写一个服务首先要初始化一个SERVICE_TABLE_ENTRY 分派表结构体的列表,然后调用StartServiceCtrlDi

编写Windows服务疑问2:探索服务与安装器的关系

首先,来弄两个服务,一个叫“飞机”,一个叫“火车”. public class FeiJiService : ServiceBase { public FeiJiService() { ServiceName = "Fei_ji"; } } public class HuoCheService : ServiceBase { public HuoCheService() { ServiceName = "Huo_che"; } } 用于演示,服务很单,接着,匹配安装

C# 编写Windows服务并设置为“允许服务与桌面交互”

本文信息来源于网络,本人只是汇总. VS创建项目,项目类型选择Window服务 为服务创建安装程序 1.. 返回到 Service1 的"设计"视图. 2.. 单击设计器的背景以选择服务本身,而不是它的任何内容. 3.. 在"属性"窗口中,单击属性列表下面灰色区域中的"添加安装程序"链接. 默认情况下,向您的项目添加包含两个安装程序的组件类.将该组件命名为 ProjectInstaller,它包含的安装程序分别是服务的安装程序和服务关联进程的安装

【JavaService】使用Java编写部署windows服务

如果你玩windows系统,你对服务这个东西并不会陌生,服务可以帮我们做很多事情,在不影响用户正常工作的情况下,可以完成很多我们需要的需求. 众所周知,微软的visio studio内置的Service类可以编写windows服务,对于一个Java开发人员来说,想要编写一个windows服务部署到服务器里面, 还要在自己的开发环境装一个visio studio,那太麻烦了. 那么问题来了,我想用java编写一个windows服务,这个想法可行吗?答案是肯定的,可行! 开源的JavaService

使用C#创建及调用WCF完整实例 (Windows服务宿主)

关于WCF的概念.原理.优缺点等,在这里就不多说了,网上很多,可以自行搜索,比我解释的要专业的多. 这里直接说使用Windows 服务(Windows Service)作为宿主如何实现,其它方式不在此次教程之内 文章最后有本例的下载连接,包含源代码.说明教程.编译后文件 实例环境:Windows Server 2008 R2 + VS 2010(C#) 打开 VS 2010,选择 新建项目,选择 ”WCF”|”WCF 服务库 ”,注意这里是”WCF 服务库 ”,不是"WCF 服务应用程序&quo

Windows服务(system权限)程序显示界面与用户交互,Session0通知Session1里弹出对话框(真的很牛) good

源码资源下载:http://download.csdn.net/detail/stony1980/4512984 1.VC2008中编写“Windows服务”(Windows Service)程序 vc2008下新建一个 ATL 项目-> 选择创建一个“服务”类型的ATL 项目TestService,将生成如下代码, class CTestServiceModule : public CAtlServiceModuleT< CTestServiceModule, IDS_SERVICENAME