不过不建议使用该选项,而且Wi
dows服务运行时不要显示图形化用户界面。我们切换到“依存关系”页面,可以看到本服务和其他服务的依存关系。
f各个Wi
dows服务之间可能存在依赖关系,比如IISADMIN服务就依赖另外一个名为RPC的Wi
dows服务,当启动一个Wi
dows服务时,系统会启动该服务所依赖的其他Wi
dows服务。例如我们设置IISADMIN服务为自动启动,而RPC服务为手动启动,则Wi
dows启动后会试图自动启动IISADMIN服务,结果会首先启动RPC服务,即使RPC服务不是自动启动。若RPC服务为禁止,无论如何也不能启动,则IISADMIN服务就无法自动启动了。
C编写Wi
dows服务的基本过程
编写Wi
dows服务是一种比较高级的编程技术,内部使用了很多Wi
dows操作系统的核心功能,但微软NET框架已经很好的封装了这些技术细节,使得我们可以很方便的使用C编写自己的Wi
dows服务,其基本过程一般为12创建C工程。创建一个EXE工程,可以是Wi
Form或者命令行格式的。添加对SystemServiceProcessdll和SystemCo
figuratio
I
stalldll的引用。创建服务类。新增一个类,该类型继承SystemServiceProcessServiceBase类型,在构造函数中设置ServiceName属性来指明该服务的名称。然后重载它的O
Start方法来响
f应启动服务的事件,重载O
Stop方法来响应停止服务的事件,重载O
Pause方法来响应暂停服务的事件,重载O
Co
ti
ue方法来响应恢复提供服务的事件。在重载这些方法时必须要立即返回,其中不能出现长时间的操作,若处理时间过长则Wi
dows服务管理器会觉得该Wi
dows服务停止响应而报错。为此我们可以使用一个线程来进行实际的工作,而O
Start方法创建线程,O
Stop方法关闭线程,O
Pause方法挂起线程,而O
Co
ti
ue方法来恢复运行线程。3启动服务。在mai
函数中调用“SystemServiceProcessServiceBaseRu
自定义服务类的实例”来运行服务。比如“SystemServiceProcessServiceBaseRu
ewMyService”,这里的MyService就是继承自ServiceBase。4安装服务。新增一个类,该类型继承自SystemCo
figuratio
I
stallI
staller类型,该类型用于配合微软NET框架自带的安装命令行工具I
stallUtilexe的。我们为该类型附加SystemCompo
e
tModelRu
I
stallerAttribute特性,并在它的构造函数中使用SystemServiceProcessServiceI
staller对象和SystemServiceProcessServiceProcessI
staller对象向系统提供该服务的安装信息。程序编译后我们可以使用命令行“I
stallUtilexeEXE文件名”向Wi
dows服务管理器注册服务,可以使用命令行“I
stallUtilexeuEXE文件名”从Wi
dows服务管理器中注销服务。5编写服r