c怎么写服务程序( 三 )


把这两个程序保存在一个方便的位置,例如C盘根目录下 。举例来说明,把OE作为一个服务添加进Windows XP Professional操作系统中,并把这个服务命名为“Mail” 。在运行中输入“CMD”,回车,打开命令行窗口,在提示符后面直接输入:“c:\ instsrv.exe Mail c:\srvany.exe”然后回车,其中的“c:\instsrv.exe”和“c:\srvany.exe”表示这两个程序保存的位置,而Mail 则是你想添加的服务名称 。
运行Regedit打开注册表编辑器,在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services 下,找到刚才添加的Mail,点击右键,新建一个键,命名为“Parameters”,点击新建的Parameters,并再次新建一个名称为 “Application”的子键,数据类型为“REG_SZ”,数值为希望作为服务运行的程序的所在位置,如果你的Windows系统安装在C盘下,那么OE的程序位置就是C:\Program Files\Outlook Express\msimn.exe ,把这个路径添入数值中 。到现在,这个服务已经成功的添加并且设置好了 。如果你希望做的更加专业,可以在Mail服务下建立一个名为 Description的子键,数据类型同样为REG_SZ,数值可以写一些你对这个服务的描述
接下来需要对服务做一些额外的设置,在运行中输入“Services.msc”并回车,在列表中找到我们刚添加的Mail服务,双击打开,来做详细的设置 。在“General”选项卡上,我们需要设置这个服务的运行方式,在图二中可以看见,作为一个服务,有“自动(Automatic)”,“手动(Manual)”和“禁止(Disabled)”三种启动类型,按照需要,我们一般设置成自动就可以了 。而在“Logon”选项卡下可以设置以什么身份运行这个服务,一般可以不用理会,按照默认的设置 。“Recovery”选项卡下则是进行恢复设置的,你可以指定,在服务第一次,第二次和第三次出错之后分别采取什么措施 。“Dependencies”则显示了服务之间的依存关系,可以让你察看这个服务的运行依赖哪些其它服务,以及还有什么服务依赖于这个服务 。这后面几个对我们一般用户没有什么意义 。经过这些设置,你的服务已经完全可以正常工作了 。
注销一下看看 。为了让你看清除,先打开OE,这时在任务管理器里,有两个msimn进程,用户名为“.com.cn”的是打开的OE,而用户名为“SYSTEM”的就是添加的服务 。
如果你不想再运行这个服务,可以直接禁止它在启动的时候运行,或者使用Instsrv.exe程序删除 。方法是在命令行下输入“c:\ instsrv.exe Mail remove”,然后回车就可以了 。需要注意的是Instsrv.exe这个程序也可以删除某些系统服务,所以使用的时候一定要小心,对于系统服务,安全起见千万不要删除,哪怕你觉得它对你没有用 。
6.如何编写windows服务程序看了一篇文章《用C 语言编写Windows 服务程序的五个步骤》 。
但可能由于译者的疏忽,忘记了将关键代码放入该文档,导致初学者可能会看不懂 。所以又查阅了相关资料 。
自己完成了《用C 语言编写Windows 服务程序的五个步骤》中的样例程序 。在本文中我希望能给初学者一些帮助,大致讲一下编写windows服务程序需要的知识 。
首先Microsoft Windows 服务(即,以前的 NT 服务)使您能够创建在它们自己的 Windows 会话中可长时间运行的可执行应用程序 。这些服务可以在计算机启动时自动启动,可以暂停和重新启动而且不显示任何用户界面 。
这使服务非常适合在服务器上使用,或任何时候,为了不影响在同一台计算机上工作的其他用户,需要长时间运行功能时使用 。还可以在不同于登录用户的特定用户帐户或默认计算机帐户的安全上下文中运行服务 。
服务是有状态的,当我们使用windows自带的服务管理程序sc.exe查看服务状态时可以显示服务的当前状态,这个状态是由我们在程序代码中进行控制的 。你最好在服务初始化的时候将服务设置为SERVICE_START_PENDING,当初始化完毕时设为SERVICE_RUNNING,这些状态是系统自定义的状态,可通过msdn查看其他状态 。