当前位置:文档之家› 在windows下编写启动服务的脚本

在windows下编写启动服务的脚本

在windows下编写启动服务的脚本
在windows下编写启动服务的脚本

在windows下编写启动服务的脚本

由于一些服务只有在特定的时候才会使用到,所以就想到写一个脚本来手动启动服务,而不用在开机的时候自动启动。

使用命令行启动服务

在cmd下可有两种方法打开,net和sc,net用于打开没有被禁用的服务,语法是:

net start 服务名

net stop 服务名

用sc可打开被禁用的服务,语法是:

sc config 服务名start= demand //手动

sc condig 服务名start= auto //自动

sc config 服务名start= disabled //禁用

sc start 服务名

sc stop 服务名

注:1)服务名不一定是你在服务面板看到的那个名,例如,你要打开被禁用的telnet

服务,sc config telnet start= auto,报错:[SC] OpenService FAILED 1060,因为telnet的服务名不是telnet而是tlntsvr, sc config tlntsvr start= auto 就OK了,在服务面板里查看telnet属性,从可执行文件的路径里可看到服务程序名,即命令中的服务名。2)start=后面有空格,少了就有错

sc.exe命令功能列表:注:以下命令中。=号后面都有一个空格,=号前面没有空格!

1.更改服务的启动状态(这是比较有用的一个功能)

2.删除服务(除非对自己电脑的软、硬件所需的服务比较清楚,否则不建议删除任何系统服务,特别是基础服务)

3.停止或启动服务(功能上类似于net stop/start,但速度更快且能停止的服务更多)

具体的命令格式如下:

修改服务启动类型的命令行格式为(特别注意start=后面有一个空格)

sc config 服务名称start= demand(设置服务为手动启动)

sc config 服务名称start= disabled(设置服务为禁用)

停止/启动服务的命令行格式为

sc stop/start 服务名称

注意:平时常接触的都是服务的显示名称,而以上所指是服务名称,都可以在控制面板->管理工具->服务里面,双击对应的服务来查询。

先举例说明一下具体的设置方法:

如设置远程注册表服务为手动其格式为

sc config RemoteRegistry start= demand

设为禁用的格式为:

sc config RemoteRegistry start= disabled

停止服务则格式为:

sc stop RemoteRegistry

首先把自己所需设置的服务名称查到之后,按照上面的格式做成批处理文件,重装系统之后只要运行批处理文件即可。

以下是我的设置,以XpSp2为蓝本,可比对所用的系统进行增删和修改。注:未加入XpSp2的自动更新、安全中心、防火墙。

sc config Alerter start= demand

sc config TrkWks start= demand

sc config helpsvc start= demand

sc config policyAgent start= demand

sc config dmserver start= demand

sc config WmdmpmSn start= demand

sc config Spooler start= demand

sc config RemoteRegistry start= demand

sc config NtmsSvc start= demand

sc config seclogon start= demand

sc config Schedule start= demand

sc config WebClient start= demand

sc config W32Time start= demand

sc config WZCSVC start= demand

sc config ERSvc start= demand

sc config Themes start= demand

sc config FastUserSwitchingCompatibility start= disabled sc config Messenger start= disabled

sc config protectedStorage start= disabled

sc config SSDpSRV start= disabled

sc config TermService start= disabled

sc config ShellHWDetection start= disabled

如果需要立即关闭服务也可把以下代码跟在上面的代码之后

sc stop W32Time

sc stop ShellHWDetection

sc stop TrkWks

sc stop helpsvc

sc stop dmserver

sc stop policyAgent

sc stop Spooler

sc stop RemoteRegistry

sc stop seclogon

sc stop Schedule

sc stop WZCSVC

sc stop ERSvc

sc stop Themes

sc stop FastUserSwitchingCompatibility

sc stop protectedStorage

sc stop SSDpSRV

sc stop WebClient

最后把修改好之后的代码存为services.cmd,在以后进行服务设置时,直接运行事先保存好的批处理文件就可以做到事半功倍了。

看到这里,使用Win2000的朋友也不必失望,sc.exe这个命令行工具对Win2000同样

适用,可从装有WinXp或者Win2003的机器里面拷贝sc.exe文件,与保存好的批处理文件放在一起,然后执行批处理文件即可。

对注册表比较熟悉的朋友可能会想到用注册表来设置服务的启动类型,这也是一种可行的方法,本身却有着内在不足。原因是服务启动类型在注册表中对应的键值较长且分散,进行整理不方便直观且易错漏,所以这种方法比较适用于无人值守的安装时使用。

附:

在命令行中输入下面的命令即可启动相应服务:

----------------------------------

net start 服务名

----------------------------------

输入下面的命令,可以得到更多的帮助:

----------------------------------

net help

----------------------------------

与net命令相关的另一个命令就是sc命令,在命令行中输入:

----------------------------------

sc help

----------------------------------

就可以看到下面关于sc的描述:

----------------------------------

描述:

SC 是用于与服务控制管理器和服务进行通信的命令行程序。

用法:

sc [command] [service name] ...

选项 的格式为"\\ServerName"

键入"sc [command]" 可以获得有关命令的进一步帮助

命令:

query-----------查询服务的状态,

或枚举服务类型的状态。

queryex---------查询服务的扩展状态,

或枚举服务类型的状态。

start-----------启动服务。

pause-----------向服务发送PAUSE 控制请求。

interrogate-----向服务发送INTERROGATE 控制请求。

continue--------向服务发送CONTINUE 控制请求。

stop------------向服务发送STOP 请求。

config----------更改服务的配置(永久)。

description-----更改服务的描述。

failure---------更改服务失败时执行的操作。

failureflag-----更改服务的失败操作标志。

sidtype---------更改服务的服务SID 类型。

privs-----------更改服务的所需权限。

qc--------------查询服务的配置信息。

qdescription----查询服务的描述。

qfailure--------查询失败时服务执行的操作。

qfailureflag----查询服务的失败操作标志。

qsidtype--------查询服务的服务SID 类型。

qprivs----------查询服务的所需权限。

delete----------(从注册表)删除服务。

create----------创建服务(将其添加到注册表)。

control---------向服务发送控制。

sdshow----------显示服务的安全描述符。

sdset-----------设置服务的安全描述符。

showsid---------显示相应于假定名称的SID 字符串。

GetDisplayName--获取服务的DisplayName。

GetKeyName------获取服务的ServiceKeyName。

EnumDepend------枚举服务的依存关系。

示例:

sc start MyService

----------------------------------

实际上sc所完成的功能就是“控制面板.管理工具”中看到的“服务”完成的功能。在命令行中输入下面的命令,可以看到详细语法:

----------------------------------

sc config hlep

----------------------------------

sc config 服务名start= AUTO (自动)

sc config 服务名start= DEMAND (手动)

sc config 服务名start= DISABLED(禁用)

注意:等号后面必须有一个空格。

常见问题:[SC] OpenService 失败5:

原因:

因为权限不够,解决方法。

首先,我们必须先取得管理员权限,以管理员权限运行cmd.exe,就可以了,

C:\Users\fangkuan>sc config MSDTC start= auto [SC] OpenService 失败5:

C:\Windows\system32>sc config MSDTC start= auto [SC] ChangeServiceConfig 成功

windows服务大全

windows服务大全 一、什么是系统服务 在Windows 2000/XP/2003系统中,服务是指执行指定系统功能的程序、例程或进程,以便支持其他程序,尤其是低层(接近硬件)程序。通过网络提供服务时,服务可以在Active Directory(活动目录)中发布,从而促进了以服务为中心的管理和使用。 服务是一种应用程序类型,它在后台运行。服务应用程序通常可以在本地和通过网络为用户提供一些功能,例如客户端/服务器应用程序、Web服务器、数据库服务器以及其他基于服务器的应用程序。 二、配置和管理系统服务 通过上面的阅读,相信你已对Windows系统服务有所了解,与系统注册表类似,对系统服务的操作,我们可以通过“服务管理控制台”来实现。 以管理员或Administrators组成员身份登录,单击“开始→运行”菜单项,在出现的对话框中键入“Services.msc”并回车,即可打开“服务管理控制台”。你也可以单击“开始→控制面板→性能和维护→管理工具→服务”选项来启动该控制台。 在服务控制台中,双击任意一个服务,就可以打开该服务的属性对话框。在这里,我们可以对服务进行配置、管理操作,通过更改服务的启动类型来设置满足自己需要的启动、关闭或禁用服务。 在“常规”选项卡中,“服务名称”是指服务的“简称”,并且也是在注册表中显示的名称;“显示名称”是指在服务配置界面中每项服务显示的名称;“描述”是为该服务作的简单解释;“可执行文件的路

径”即是该服务对应的可执行文件的具体位置;“启动类型”是整个服务配置的核心,对于任意一个服务,通常都有3种启动类型,即自动、手动和已禁用。只要从下拉菜单中选择就可以更改服务的启动类型。“服务状态”是指服务的现在状态是启动还是停止,通常,我们可以利用下面的“启动”、“停止”、“暂停”、“恢复”按钮来改变服务的状态。 下面让我们来看看3种不同类型的启动状态: 自动:此服务随着系统启动时启动,它将延长启动所需要的时间,有些服务是必须设置为自动的,如Remote Procedure Call(RPC)。由于依存关系或其他影响,其他的一些服务也必须设置为自动,这样的服务最好不要去更改它,否则系统无法正常运行。 手动:如果一个服务被设置为手动,那么可以在需要时再运行它。这样可以节省大量的系统资源,加快系统启动。 已禁用:此类服务不能再运行。这个设置一般在提高系统安全性时使用。如果怀疑一个陌生的服务会给你的系统带来安全上的隐患,可以先尝试停止它,看看系统是否能正常运行,如果一切正常,那么就可以直接禁用它了。如果以后需要这个服务,在启动它之前,必须先将启动类型设置为自动或手动。 单击“依存关系”选项卡,在这里我们可以看到,在顶端列表中指出运行选定服务所需的其他服务,底端列表指出了需要运行选定服务才能正确运行的服务。它说明了一些服务并不能单独运行,必须依靠其他服务。在停止或禁用一个服务之前,一定要看看这个服务的依存关系,

用C语言编写Windows服务程序的五个步骤

用C语言编写Windows服务程序的五个步骤 https://www.doczj.com/doc/f31888932.html,/Article/kfyy/cyy/jszl/200603/3842.html Windows 服务被设计用于需要在后台运行的应用程序以及实现没有用户交互的任务。为了学习这种控制台应用程序的基础知识,C(不是C++)是最佳选择。本文将建立并实现一个简单的服务程序,其功能是查询系统中可用物理内存数量,然后将结果写入一个文本文件。最后,你可以用所学知识编写自己的 Windows 服务。 当初我写第一个NT 服务时,我到 MSDN 上找例子。在那里我找到了一篇Nigel Thompson 写的文章:“Creating a Simple Win32 Service in C++”,这篇文章附带一个 C++ 例子。虽然这篇文章很好地解释了服务的开发过程,但是,我仍然感觉缺少我需要的重要信息。我想理解通过什么框架,调用什么函数,以及何时调用,但 C++ 在这方面没有让我轻松多少。面向对象的方法固然方便,但由于用类对底层 Win32 函数调用进行了封装,它不利于学习服务程序的基本知识。这就是为什么我觉得 C 更加适合于编写初级服务程序或者实现简单后台任务的服务。在你对服务程序有了充分透彻的理解之后,用 C++ 编写才能游刃有余。当我离开原来的工作岗位,不得不向另一个人转移我的知识的时候,利用我用 C 所写的例子就非常容易解释 NT 服务之所以然。 服务是一个运行在后台并实现勿需用户交互的任务的控制台程序。Windows NT/2000/XP 操作系统提供为服务程序提供专门的支持。人们可以用服务控制面板来配置安装好的服务程序,也就是 Windows 2000/XP 控制面板|管理工具中的“服务”(或在“开始”|“运行”对话框中输入 services.msc /s——译者注)。可以将服务配置成操作系统启动时自动启动,这样你就不必每次再重启系统后还要手动启动服务。 本文将首先解释如何创建一个定期查询可用物理内存并将结果写入某个文本文件的服务。然后指导你完成生成,安装和实现服务的整个过程。 第一步:主函数和全局定义 首先,包含所需的头文件。例子要调用 Win32 函数(windows.h)和磁盘文件写入(stdio.h): 接着,定义两个常量:

C#编写的windows服务用命令行安装的详细步骤

第一步:建立好服务,写好代码 第二步:安装 步骤:win+R -----→CMD -------输入microsoft的framework的相应版本的执行程序位置(如:C:\Windows\https://www.doczj.com/doc/f31888932.html,\Framework\v4.0.30319\InstallUtil.exe -----图一所示文件)-→空一格再输入你的服务的执行文件的路径(如:D:\zt_documents\服务\SSY.DealerLoginStateService.root\SSY.DealerLoginStateService\SSY.LoginStateService\SSY.LoginSt ateService\bin\Debug\XX.exe(这里的.exe写自己的项目的名称) 图三所示文件)--→回车(如果安装成功可以都到如图2所示的提示)

图一

图二

图三 第三步:启动服务 打开服务管理,找到你自己的服务启动 第四步:卸载 步骤:win+R -----→CMD -------输入microsoft的framework的相应版本的执行程序位置(如:C:\Windows\https://www.doczj.com/doc/f31888932.html,\Framework\v4.0.30319\InstallUtil.exe -u -----图一所示文件)-→空一格再输入-u -→空一格再输入你的服务的执行文件的路径(如:D:\zt_documents\服务\SSY.DealerLoginStateService.root\SSY.DealerLoginStateService\SSY.LoginStateService\SSY.LoginSt

Windows服务

Windows 服务应用程序介绍 Microsoft Windows 服务(即,以前的 NT 服务)使您能够创建在它们自己的Windows 会话中可长时间运行的可执行应用程序。这些服务可以在计算机启动时自动启动,可以暂停和重新启动而且不显示任何用户界面。这使服务非常适合在服务器上使用,或任何时候,为了不影响在同一台计算机上工作的其他用户,需要长时间运行功能时使用。还可以在不同于登录用户的特定用户帐户或默认计算机帐户的安全上下文中运行服务。有关服务和 Windows 会话的更多信息,请参见MSDN Online 的 Platform SDK 文档中的“About Services”部分。 注意Windows 服务应用程序项目模板和相关的功能在 Visual Basic 和 Visual C# .NET 的标准版中不可用。有关更多信息,请参见Visual Basic 标准版功能或Visual C# 标准版的功能。 通过创建作为服务安装的应用程序,可以轻松地创建服务。例如,假设要监视性能计数器数据并对阈值做出反应。可以编写一个侦听性能计数器数据的 Windows 服务应用程序、部署该应用程序并开始收集和分析数据。 将服务创建为 Microsoft Visual Studio .NET 项目,并在其中定义特定代码,以控制可以发送到服务的命令和接收到这些命令时采取的操作。可以发送到服务的命令包括开始、暂停、继续和停止该服务,以及执行自定义命令。 创建并生成了应用程序后,可以通过运行命令行实用工具InstallUtil.exe 并将路径传递给服务的可执行文件,或通过使用 Visual Studio 的部署功能来安装该应用程序。然后可以使用服务控制管理器启动、停止、暂停、继续和配置服务。这些任务中有许多也可以在“服务器资源管理器”的“服务”节点中或通过使用ServiceController类来实现。 服务应用程序与其他 Visual Studio .NET 应用程序对比 服务应用程序与其他许多项目类型的功能在几个方面有所不同: ?必须将服务应用程序项目创建的已编译可执行文件安装在服务器上,此项目才能以有意义的方式运行。不能通过按 F5 键或 F11 键来调试或运行服务应 用程序;不能立即运行服务或进入并单步执行其代码。相反,必须安装和启动服务,然后将一个调试器附加到服务的进程中。有关更多信息,请参见调试 Windows 服务应用程序。 ?与一些类型的项目不同,对于服务应用程序,必须为其创建安装组件。安装组件在服务器上安装和注册服务,并用 Windows 服务控制管理器为服务创 建一个项。有关更多信息,请参见将安装程序添加到服务应用程序。

C# Windows服务开发

一、VS2012下开发Windows服务 1、打开VS2012,新建项目,选择Windows服务,此处我以开发一个定时自动发送邮件的服务来做介绍,如下图: 2、创建好后,编译器会自动创建一些文件,其中会有一个Service1类文件,该文件是服务的关键,我们可以将其重命名,这里我将其命名为MainService,如下图: 3、在MainService的后台代码中会自动创建一些方法,包括服务的启动和停止方法等,如下图:

4、将服务启动时要执行的操作放在OnStart方法中,服务停止时要执行的操作放在OnStop方法中 5、在MainService.cs设计器中,单击邮件,选择选择添加安装程序,便会生成一个ProjectInstaller.cs的文件,如图所示: 6、设置ProjectInstaller.cs的属性,切换到属性设置界面 (1)选择serviceInstaller1,并设置相应属性如下图所示:

其中:Description属性用于设置服务安装之后再服务界面上显示的描述信息; DisplayName属性用于设置服务安装之后再服务界面上显示的服务名称; ServiceName属性用于设置服务的名称,此名称必须与ServiceBase类的ServiceName 属性设置的名称一致,该名称用于系统标识此服务,可以理解成DisplayName为ServiceName的别名; StartType属性用于设置服务的启动方式。 (2)选择serviceProcessInster1,设置其属性如下:

此处主要设置Account属性,该属性用来指示运行该服务时的账户类型,一般设置为LocalSystem。 7、到此步一个简单的windows服务就创建好了,编译程序会生成一个EmailService.exe 的可执行文件,接下来便是安装服务了。 Windows服务的安装有多种方式,比如可以再cmd下调用命令来安装,也可以写一个安装程序来安装,此处介绍使用bat批处理来安装。 1、安装Windows服务需要用到InstallUtil.exe程序,该程序位于: C:\Windows\https://www.doczj.com/doc/f31888932.html,\Framework64\v4.0.30319 .NET4.0 C:\Windows\https://www.doczj.com/doc/f31888932.html,\Framework64\v2.0.50727 .NET2.0 2、我们可以再批处理命令中直接调用以上目录中的InstallUtil.exe程序,也可以将该程序拷贝到应用程序的目录下,此处我选择奖该程序拷贝到应用程序的目录下,同时将批处理文件也创建在应用程序的的目录下,如下图所示:

Windows服务开发实例

C#Windows服务程序开发实例介绍 C#Windows服务程序开发实例程序的目的和用途: 很多开机启动程序仅仅加在启动项里面,只有登陆后才真正启动。windows服务在开机未进行用户登录前就启动了。正是利用这一点,解决一些服务器自动重启后特定软件也自动启动的问题。 C#Windows服务程序开发1. 新建一个服务项目 visual C#----windows----windows服务; C#Windows服务程序开发2. 添加一个dataset(.xsd),用于存储启动目标的路径,日志路径等。 在dataset可视化编辑中,添加一个datatable,包含两列 StartAppPath 和LogFilePath。分别用于存储目标的路径、日志路径。 我认为利用dataset.xsd存储配置参数的优势在于可以忽略xml解析的具体过程直接使用xml文件。 在dataset中提供了ReadXml方法用于读取xml文件并将其转换成内存中的一张datatable表,数据很容易取出来!同样,WriteXml方法用于存储为xml格式的文件,也仅仅需要一句话而已。 C#Windows服务程序开发3. program.cs文件作为程序入口,代码如下: https://www.doczj.com/doc/f31888932.html,ing ; https://www.doczj.com/doc/f31888932.html,ing System.ServiceProcess; https://www.doczj.com/doc/f31888932.html,ing System.Text; https://www.doczj.com/doc/f31888932.html,space WindowsServices_AutoStart 5.{ 6.static class Program 7.{ 8./// ﹤summary﹥ 9./// 应用程序的主入口点。 10./// ﹤/summary﹥ 11.static void Main() 12.{ 13.ServiceBase[] ServicesToRun;

Windows服务编写原理及探讨

Windows服务编写原理及探讨 有那么一类应用程序,是能够为各种用户(包括本地用户和远程用户)所用的,拥有用户授权级进行管理的能力,并且不论用户是否物理的与正在运行该应用程序的计算机相连都能正常执行,这就是所谓的服务了。 (一)服务的基础知识 Question 1. 什么是服务?它的特征是什么? 在NT/2000中,服务是一类受到操作系统优待的程序。一个服务首先是一个Win32可执行程序,如果要写一个功能完备且强大的服务,需要熟悉动态连接库(Dlls)、结构异常处理、内存映射文件、虚拟内存、设备I/O、线程及其同步、Unicode以及其他的由WinAPI函数提供的应用接口。当然本文讨论的只是建立 一个可以安装、运行、启动、停止的没有任何其他功能的服务,所以无需上述知识仍可以继续看下去,我会在过程中将理解本文所需要的知识逐一讲解。 第二要知道的是一个服务决不需要用户界面。大多数的服务将运行在那些被锁在某些黑暗的,冬暖夏凉的小屋子里的强大的服务器上面,即使有用户界面一般也没有人可以看到。如果服务提供任何用户界面如消息框,那么用户错过这些消息的可能性就极高了,所以服务程序通常以控制台程序的形式被编写,进 入点函数是main()而不是WinMain()。 也许有人有疑问:没有用户界面的话,要怎样设置、管理一个服务?怎样开始、停止它?服务如何发出警告或错误信息、如何报告关于它的执行情况的统计数据?这些问题的答案就是服务能够被远程管理, Windows NT/2000提供了大量的管理工具,这些工具允许通过网络上的其它计算机对某台机器上面的服务进行管理。比如Windows 2000里面的“控制台”程序(mmc.exe),用它添加“管理单元”就可以管理本机或其他机器上的服务。

VC编写Windows服务程序

#include #include #include TCHAR szServ iceN ame[] = _T("My TestSer v ice"); DWORD dwThreadID; HANDLE hEvent = INVALID_HANDLE_VALUE; SERVICE_STATUS s tatus; SERVICE_STATUS_HANDLE hServ iceStatus; v oi d Init(); BOOL IsSer v iceInstalled(); BOOL InstallSer v ice(); BOOL U ninstallSer v ice(); BOOL Ser v iceCtrlStart(); BOOL Ser v iceCtrlStop(); v oi d WINAPI Ser v iceMai n(); v oi d WINAPI Ser v iceStrl(DWORD dwOpc ode); v oi d LogEv ent(LPCTSTR pszFormat, ...); //Usuage // Ins tall ser v ice: //TestServ ic e.exe /i nstall // Uninstall ser v ice: //TestServ ic e.exe /unins tall // Start ser v ice: //TestServ ic e.exe /s tart // Stop s erv ic e: //TestServ ic e.exe /s top

windows服务程序的编写

摘要:几乎所有的操作系统在启动的时候都会启动一些不需要与用户交互的进程,这些进程在Windows中就被称作服务。它由服务程序、服务控制程序(SCP,service control program)和服务控制管理器(SCM,service control manager)三个组件构成。本文针对服务程序与服务控制程序的编写进行综合讲述。 关键词:Windows,服务,VC++ ?1 服务介绍 几乎所有的操作系统在启动的时候都会启动一些不需要与用户交互的进程,这些进程在Windows中就被称作服务。它通常用于实现客户/服务器模式中的服务器方,如我们常见的Web服务IIS,当操作系统在启动后它就自动被运行,不管是否有人登陆到系统只要系统开启它就能得到运行。 服务程序、服务控制程序(SCP,service control program)和服务控制管理器(SCM,service control manager)组成了Windows服务。我们可以通过服务控制程序操纵服务控制管理器来配置、启动、暂停、停止服务程序。其中服务程序和服务控制程序可以由我们自己来编写扩展,而服务控制管理器(\windows\system32\servics.exe)则是操作系统内置的一个部件。首先我们来了解一下SCM的工作情况,然后我们介绍服务程序的编写和服务控制时所涉及API的使用。 ?2 服务控制管理器 SCM本身也是一个服务程序(\windows\system32\servics.exe),作为windows的后台服务运行的。Winlogon在系统引导的早期会将SCM启动起来。SCM的服务入口函数首先创建一个初始化为无信号的同步事件对象(SvcCtrlEvent_A3752DX);接下来,它开始建立一个内部服务数据库,这个数据库要按事先规定好的一个顺序列出所有服务组,并记录与服务相关的详细信息;当这个数据库建立完成时SCM就开始按顺序启动那些启动方式为自动的服务,如果有服务要动行于指定用户账户中时还要调用LSASS,如果服务启动失败则会被放入一个名为ScFailedDrivers的列表中。当这些工作都完成后,SCM将同步事件对象SvcCtrlEvent_A3752DX置为有信号状态;并做好系统停机的准备。 当系统要关机时会向Windows子系统进程Csrss发送一个消息,以便调用Csrss的停机例程。Csrss会对所有活动的进程循环通知系统正在停机。对于除SCM以外的每一个系统进程如果

c开发windowsservice程序

C#开发Windows Service程序 Windows Service概念介绍 Windows Service,也称Windows服务,是32位Windows 操作系统中一种长期运行的后台程序。它们长期后台运行,没有用户界面,默默无闻,但它们却是支持Windows正常 运行的幕后英雄,却永无出头之日。 Windows服务程序为其他系统模块提供了非常重要的服务,而且各个Windows服务分工明确,比如IISAdmin服务提供WEB内容的发布功能,若IISAdmin服务不启动,则静态HTML页面、ASP、https://www.doczj.com/doc/f31888932.html,或者WebService等等统统不行;有个名为“Print Spooler”的服务用于提供打印支持,若该服务不启动,则任何软件都不能进行打印,比如Word,记 事本或者报表软件等等。 Windows启动后在没有用户登录时就会启动Windows服务。Windows NT和Windows2000,以及更新的版本操作系统能运行Windows服务,但Windows98及其前期版本是不能运行服务的。 我们打开Windows资源管理器,在左边的树状列表中选中“桌面-控制面板-管理工具”。

在右边的列表中打开“服务”项目即可打开Windows服务管 理器。 在这些服务中,有我们最熟悉的IIS Admin和World Wide Web Publishing服务了。我们双击一个服务项目即可打开服务属性对话框。 Windows服务有一个服务名称属性,该属性是服务的惟一的不可重复的名称,我们可以在命令行中使用命令“net start 服务名称”来启动服务,使用“net stop 服务名称”来停止服务。Windows服务的启动类型有自动,手动和已禁用。当启动类型为自动时,Windows启动后不等用户登录就自动启动服务,当启动类型为手动时,需要某个操作员登录后点击这里的“启动”按钮来启动服务,而当启动类型为已禁用时,Windows 服务不能启动。 该页面中的“启动”按钮用于启动尚未启动的Windows服务,运行提供服务的进程;“停止”按钮用于停止已经启动的服务,杀死服务进程;而“暂停”按钮用于通知服务进程暂时停止提 供服务,但服务进程依然存在;而“恢复”按钮用于通知处于 暂停模式的服务进程重新提供服务。 我们可以查看服务属性对话框的“登录”页面。

c#开发和部署windows服务

c#开发和部署windows服务

c# 创建Windows服务 ( Installutil .exe方式加载 ) 一.Windows服务介绍: Windows服务以前被称作NT服务,是一些运行在Windows NT、Windows 2000和Windows XP等操作系统下用户环境以外的程序。在以前,编写Windows服务程序需要程序员很强的C或C++功底。然而现在在Visual https://www.doczj.com/doc/f31888932.html,下,你可以运用C++或Visual C#或Visual https://www.doczj.com/doc/f31888932.html,很轻松的创建一个Windows服务程序。同样,你还可以运用其他任何与CLR相容的语言来创建Windows服务程序。本文就向大家介绍如何运用Visual C#来一步一步创建一个文件监视的Windows服务程序,然后介绍如何安装、测试和调试该Windows服务程序。 在介绍如何创建Windows服务程序以前,我先向大家介绍一些有关Windows 服务的背景知识。一个Windows服务程序是在Windows操作系统下能完成特定功能的可执行的应用程序。Windows服务程序虽然是可执行的,但是它不像一般的可执行文件通过双击就能开始运行了,它必须有特定的启动方式。这些启动方式包括了自动启动和手动启动两种。对于自动启动的Windows服务程序,它们在Windows启动或是重启之后用户登录之前就开始执行了。只要你将相应的Windows服务程序注册到服务控制管理器(Service Control Manager)中,并将其启动类别设为自动启动就行了。而对于手动启动的Windows服务程序,你可以通过命令行工具的NET START 命令来启动它,或是通过控制面板中管理工具下的服务一项来启动相应的Windows服务程序(见图1)。同样,一个Windows 服务程序也不能像一般的应用程序那样被终止。因为Windows服务程序一般是没有用户界面的,所以你也要通过命令行工具或是下面图中的工具来停止它,或是在系统关闭时使得 Windows服务程序自动停止。因为Windows服务程序没有用户界面,所以基于用户界面的API函数对其是没有多大的意义。为了能使一个 Windows服务程序能够正常并有效的在系统环境下工作,程序员必须实现一系列的方法来完成其服务功能。Windows服务程序的应用范围很广,典型的Windows服务程序包含了硬件控制、应用程序监视、系统级应用、诊断、报告、Web和文件系统服务等功能。 二.创建Windows服务程序: 在介绍如何创建Windows服务程序以前,我先向大家介绍一下.Net框架下与Windows服务相关的命名空间和其中的类库。.Net 框架大大地简化了Windows 服务程序的创建和控制过程,这要归功于其命名空间中的功能强大的类库。和Windows服务程序相关的命名空间涉及到以下两个:System.ServiceProcess 和System.Diagnostics。 要创建一个最基本的Windows服务程序,我们只需要运用.Net框架下的System.ServiceProcess命名空间以及其中的四个类:ServiceBase、ServiceInstaller、ServiceProcessInstaller以及ServiceController. 其中 ServiceBase类定义了一些可被其子类重载的函数,通过这些重载的函数,服务控制管理器就可以控制该Windows服务程序了。这些函数包括:OnStart ()、OnStop()、OnPause()以及OnContinue()等四个。而且ServiceBase

创建Windows服务(Windows Services)N种方式总结

最近由于工作需要,写了一些windows服务程序,有一些经验,我现在总结写出来。 目前我知道的创建创建Windows服务有3种方式: a.利用.net框架类ServiceBase b.利用组件Topshelf c.利用小工具instsrv和srvany 下面我利用这3种方式,分别做一个windows服务程序,程序功能就是每隔5秒往程序目录下记录日志: a.利用.net框架类ServiceBase 本方式特点:简单,兼容性好 通过继承.net框架类ServiceBase实现 第1步: 新建一个Windows服务 public partial class Service1 : ServiceBase { readonly Timer _timer; private static readonly string FileName = Path.GetDirectoryName ( Assembly.GetExecutingAssembly ( ).Location ) + @"\" + "test.txt"; public Service1 ( ) { InitializeComponent ( ); _timer = new Timer ( 5000 ) { AutoReset = true , Enabled = true }; _timer.Elapsed += delegate ( object sender , ElapsedEventArgs e ) { this.witre ( string.Format ( "Run DateTime {0}", DateTime.Now ) ); }; } protected override void OnStart ( string [ ] args ) {

C#Windows服务开发

用Visual C#创建Windows服务程序 一.Windows服务介绍: Windows服务以前被称作NT服务,是一些运行在Windows NT、Windows 2000和Windows XP等操作系统下用户环境以外的程序。在以前,编写Windows服务程序需要程序员很强的C或C++功底。然而现在在Visual https://www.doczj.com/doc/f31888932.html,下,你可以运用C++或Visual C#或Visual https://www.doczj.com/doc/f31888932.html,很轻松的创建一个Windows服务程序。同样,你还可以运用其他任何与CLR相容的语言来创建Windows服务程序。本文就向大家介绍如何运用Visual C#来一步一步创建一个文件监视的Windows服务程序,然后介绍如何安装、测试和调试该Windows服务程序。 在介绍如何创建Windows服务程序以前,我先向大家介绍一些有关Windows服务的背景知识。一个Windows服务程序是在Windows操作系统下能完成特定功能的可执行的应用程序。Windows服务程序虽然是可执行的,但是它不像一般的可执行文件通过双击就能开始运行了,它必须有特定的启动方式。这些启动方式包括了自动启动和手动启动两种。对于自动启动的Windows服务程序,它们在Windows启动或是重启之后用户登录之前就开始执行了。只要你将相应的Windows服务程序注册到服务控制管理器(Service Control Manager)中,并将其启动类别设为自动启动就行了。而对于手动启动的Windows 服务程序,你可以通过命令行工具的NET START 命令来启动它,或是通过控制面板中管理工具下的服务一项来启动相应的Windows服务程序(见图1)。同样,一个Windows 服务程序也不能像一般的应用程序那样被终止。因为Windows服务程序一般是没有用户界面的,所以你也要通过命令行工具或是下面图中的工具来停止它,或是在系统关闭时使得Windows服务程序自动停止。因为Windows服务程序没有用户界面,所以基于用户界面的API函数对其是没有多大的意义。为了能使一个Windows服务程序能够正常并有效的在系统环境下工作,程序员必须实现一系列的方法来完成其服务功能。Windows服务程序的应用范围很广,典型的Windows服务程序包含了硬件控制、应用程序监视、系统级应用、诊断、报告、Web和文件系统服务等功能。 图1

如何编写一个Windows服务(一)-研发中心

如何编写一个Windows服务(一) 在Windows中,服务是一个特殊的程序,由服务管理器进行管理,允许在用户尚未登录的时候就启动。如果该程序意外终止,服务管理器会尝试重新启动该程序。 那么,如何写一个Windows服务呢?如果我想在Windows服务中使用Qt又要怎么做呢? 1.写一个服务的main函数 众所周知,C++程序以main函数作为程序的入口。 如果想要写一个服务,也需要一个函数作为服务程序的入口。 这个函数与main函数的定义是一样的: void WINAPI service_main(intargc, char** argv); 是的,写上这么一个函数作为服务的主函数就好了,函数内部无论你想做什么都可以。不过,因为我们写的是服务,所以一些和服务相关的功能我们应该注意:作为一个服务,告诉服务管理器自身的状态以及接受服务管理器的控制是最基本的吧。所以,一般情况下,我们会在服务的main函数中写上这么两个功能:注册一个服务管理函数,以及告知服务管理器自身已经启动了。 1.1.注册服务管理函数 服务管理函数的声明是这样的: void WINAPI ServiceHandler(DWORD fdwControl); 该函数的功能是,Windows的服务管理器会根据系统需要与用户的操作向服务发送一些请求,服务需要相应这些请求。其中,请求的类型就是这个函数的参数。知道了这个原理,那么我们一般情况下就会这么实现这个函数:

switch语句很好理解,case中的宏定义也能很轻松的明白是什么意思。 其中,ServiceStatus是一个“全局”的结构体,其定义如下: SERVICE_STATUS ServiceStatus; 也就是说,对于这个例子来说,我们只会响应服务管理器的停止与关闭消息,被粉色矩形框住的代码就是我们自己的程序退出逻辑——毕竟有些程序并不能直接的就被中止了,例如例子中,一旦服务器被关闭就会写入一个log。 好了,我们已经有了服务的管理函数,那么如何让服务管理器知道我们的服务有这么一个管理函数呢?只需要使用以下方式即可: hServiceStatusHandle = RegisterServiceCtrlHandler(TEXT(SERVICE_NAME), ServiceHandler);

C#编写windows服务程序步骤(精)

C#编写windows服务程序步骤 1. 新建一个项目,或者从选择当前解决方案--右键-添加--新建项目 2. 选择(项目类型Visual C#项目,(模板Windows 服务,填写要创 建的服务名称(修改默认的WindowService1成为你自己的服务名称,然后按确定按钮. 3. 资源管理器中默认创建一个WindowsService1的项目,项目下包括一个Service1.cs 文件 4. 左侧选择"工具箱"--"组件",拖动一个Timer对象到Service1.cs [设计]这个页面窗体上.点击窗体上的Timers1足见,设置其属性:Interval属性数字N(例如200毫 秒==1秒进行5次操作) 5.双击这个Timer1组件填加自己所需要的功能函数private void timer1_Elapsed(object sender, System.Timers.ElapsedEventArgs e { //本机电脑硬件配置文件 string strFileName=@"c:\ComputerInfo.txt"; string strTest="硬盘信息+显卡信息+主板信息+声卡信息+网卡信息+打印机信息"; //判断传送文件是否存在.如果不存在则写入一行测试信息 if (!File.Exists(strFileName { File.CreateText(strFileName; } byte[] content=Encoding.UTF8.GetBytes(strTest; //创 建文本文件对象 FileStream fs=new FileStream(strFileName,FileMode.OpenOrCreate,FileAccess.ReadWrite; //文件中写入 测试数据 fs.Write(content,0,content.Length; //关闭文件对象 fs.Close(; } 6.添加完相应的函数代码后,从代码视图切换到设计视图,点鼠标右键选择“添加安装程序” 7. 然后在当前项目资源管理器中会发现多了一个ProjectInstaller.cs文件,点击该文件打开ProjectInstaller.cs [设计]窗体.会发现里面自动有两个组件"serviceProcessInstaller1"和"serviceInstaller1" 8. 设置serviceInstaller1组件的属性:ServiceName = MyService(名 字自己随意修改的和 StartType = Automatic (开机自动运行方式 9. 设置serviceProcessInstaller1组件的属性:Account = LocalSystem 10. 选择当前解决方案,设置方案属性中的"启动项目"为刚才所添加的项目名称.按F5运行编译当前项目,会弹出一个对话框"无法从命令行或者调试器启动服务,必须首先安装Windows服务(使 用installutil.exe,然后用Server Explorer、Windows服务管理工具或NET START命令启动它"。错误没有关系,只要当前解决方案\项目文件夹\bin\Debug\文件夹下面多了一个EXE文件就好了. 至此自己需要的服务基本操作已经完成.剩下来的就是 编译.注册启动服务了. 11.Windows服务器注册停止打开CMD窗口--开始--运行-- 输入CMD,回车注册服务命令 cd

windows 7(win7)系统进程服务详解

windows 7(win7)系统进程服务详解 windows 7已经发布有段时间了,相信很多网友都已经换上了传说中非常完美的win7系统.win7不仅继承而且还超越了vista的美观界面,性能优化方面也下足了功力.还拥有强大的win xp兼容性,这使得很多XP用户都愿意将系统升级为windows 7,它在资源利用方面优化也是可圈可点,不像VISTA,让人感觉“缓慢”和“急躁”。本文就来给大家详解下win7的进程和服务,大家可以根据自己的需求关闭服务以提高win7系统运行速度。 不建议关闭或禁用的服务 AppID Service 确定应用程序的身份。该服务的默认运行方式是手动,不建议更改。 目标路径:\Windows\system32\svchost.exe -k LocalServiceAndNoImpersonation Application Experience 在应用程序启动时处理应用程序兼容型查询请求。该服务的默认运行方式是自动,不建议更改。 目标路径:\WINDOWS\system32\svchost.exe -k netsvcs 估计使用该技术之后在运行老程序的时候系统会自动选择相应的兼容模式运行,以便取得最佳效果。 Application Information 为应用程序的运行提供信息。该服务的默认运行方式是手动,不建议更改。 目标路径:\WINDOWS\system32\svchost.exe -k netsvcs Application Layer Gateway Service 为Internet 连接共享提供第三方协议插件的支持。该服务的默认运行方式是手动,如果你连接了网络,则该服务会自动启动,不建议更改。 目标路径:\WINDOWS\System32\alg.exe Background Intelligent Transfer Service 在后台传输客户端和服务器之间的数据。如果禁用了BITS,一些功能,如Windows Update,就无法正常运行。该服务的默认运行方式是自动,这个服务的主要用途还是用于进行Windows Update或者自动更新,最好不要更改这个服务。 目标路径:\WINDOWS\System32\svchost.exe -k netsvcs COM+ Event System 支持系统事件通知服务(SENS),此服务为订阅组件对象模型(COM)组件事件提供自动分布功能。如果停止此服务,SENS 将关闭,而且不能提供登录和注销通知。如果禁用此服务,显式依赖此服务的其他服务将无法启动。一个很原始的古老服务,该服务的默认运行方式为自动,这是一个重要的系统服务,设为手动也会自动运行,设为禁用好像也没什么影响,但是日志中会出现大量的错误。我们最好不要乱动。 目标路径:\WINDOWS\system32\svchost.exe -k netsvcs Cryptographic Services 提供三种管理服务:编录数据库服务,它确定Windows 文件的签字;受保护的根服务,它从此计算机添加和删除受信根证书机构的证书;和密钥(Key)服务,它帮助注册此计算机获取证书。如果此服务被终止,这些管理服务将无法正常运行。如果此服务被禁用,任何依赖它的服务将无法启动。维护和管理系统的所有证书,密钥以及安全数据库。另外访问一些网站所需要的服务,比如微软的网站,Windows Update,或者DRM的网站,很多时候它会提供和确认Windows文件的签名信息。强烈建议也是必须不能去动它,永远别

十步完成windows服务的安装

十步完成Windows服务的安装 可能是太过于懒惰的原因,研究个windows 服务的安装程序都花了大半天时间。在网上看了一些示例,大部分都言过其实,把过程搞得太过复杂,老是需要去研究如何利用InstallUtil.exe及其参数。事实上,既然要安装.net下制作的windows服务,肯定首先得在目标机器上安装有.net框架。因此,InstallUtil.exe也一定已经存在目标机器上了,因而利用微软的傻瓜式操作就能很好地解决windows服务安装和卸载的问题。 过一段时间估计还要狠狠地利用windows服务来完成一些功能,为了加深印象,又回过头弄了一个名叫HelloWorldService的windows服务,用最简单的demo来完成所有的操作。这个服务的功能,仅仅是在它启动的时候创建一个HelloWorld.txt文件,里边写上Hello World!这几个简单的字母而已。 1、选择Visual C#->Windows->Windows 服务,创建一个HelloWorldService 项目。 2、通过ServiceName更改服务的名称为”HelloWorldService“,这是最后在安装服务成功后在服务管理面板出现的名称。

3、将Service1.cs更名为HelloWorldService.cs,在其OnStart方法中写入简单的代码,用来实现创建文件并写入“Hello World!"这几个经典字母。

4、在HelloWorldService.cs的设计界面点右键,在弹出菜单中选择”添加安装程序“。

点击后出来的设计界面上添加了两个控件——ServiceProcessInstall和ServiceInstaller。 ServiceProcessInstall安装一个可执行文件,该文件包含扩展 ServiceBase 的类。该类由安装实用工具(如 InstallUtil.exe)在安装服务应用程序时调用。在这里主要是修改其Account属性。ServiceAccount指定服务的安全上下文,安全上下文定义其登录类型。

c#开发和部署windows服务

c# 创建Windows服务 ( Installutil .exe方式加载 ) 一.Windows服务介绍: Windows服务以前被称作NT服务,是一些运行在Windows NT、Windows 2000和Windows XP等操作系统下用户环境以外的程序。在以前,编写Windows服务程序需要程序员很强的C或C++功底。然而现在在Visual https://www.doczj.com/doc/f31888932.html,下,你可以运用C++或Visual C#或Visual https://www.doczj.com/doc/f31888932.html,很轻松的创建一个Windows服务程序。同样,你还可以运用其他任何与CLR相容的语言来创建Windows服务程序。本文就向大家介绍如何运用Visual C#来一步一步创建一个文件监视的Windows 服务程序,然后介绍如何安装、测试和调试该Windows服务程序。 在介绍如何创建Windows服务程序以前,我先向大家介绍一些有关Windows 服务的背景知识。一个Windows服务程序是在Windows操作系统下能完成特定功能的可执行的应用程序。Windows服务程序虽然是可执行的,但是它不像一般的可执行文件通过双击就能开始运行了,它必须有特定的启动方式。这些启动方式包括了自动启动和手动启动两种。对于自动启动的Windows服务程序,它们在Windows启动或是重启之后用户登录之前就开始执行了。只要你将相应的Windows服务程序注册到服务控制管理器(Service Control Manager)中,并将其启动类别设为自动启动就行了。而对于手动启动的Windows服务程序,你可以通过命令行工具的NET START 命令来启动它,或是通过控制面板中管理工具下的服务一项来启动相应的Windows服务程序(见图1)。同样,一个Windows 服务程序也不能像一般的应用程序那样被终止。因为Windows服务程序一般是没有用户界面的,所以你也要通过命令行工具或是下面图中的工具来停止它,或是在系统关闭时使得 Windows服务程序自动停止。因为Windows服务程序没有用户界面,所以基于用户界面的API函数对其是没有多大的意义。为了能使一个Windows服务程序能够正常并有效的在系统环境下工作,程序员必须实现一系列的方法来完成其服务功能。Windows服务程序的应用范围很广,典型的 Windows 服务程序包含了硬件控制、应用程序监视、系统级应用、诊断、报告、Web和文件系统服务等功能。 二.创建Windows服务程序: 在介绍如何创建Windows服务程序以前,我先向大家介绍一下.Net框架下与Windows服务相关的命名空间和其中的类库。.Net 框架大大地简化了Windows 服务程序的创建和控制过程,这要归功于其命名空间中的功能强大的类库。和Windows服务程序相关的命名空间涉及到以下两个:System.ServiceProcess 和System.Diagnostics。 要创建一个最基本的Windows服务程序,我们只需要运用.Net框架下的System.ServiceProcess命名空间以及其中的四个类:ServiceBase、ServiceInstaller、ServiceProcessInstaller以及ServiceController. 其中 ServiceBase类定义了一些可被其子类重载的函数,通过这些重载的函数,服务控制管理器就可以控制该Windows服务程序了。这些函数包括:OnStart ()、OnStop()、OnPause()以及OnContinue()等四个。而且ServiceBase 类的子类还可以重载 OnCustomCommand()函数来完成一些特定的操作。通过重

相关主题
文本预览
相关文档 最新文档