首页 / 软件开发 / C++ / WinNT下Service的编制
WinNT下Service的编制2008-01-05Windows NT与Windows 9x有一个非常重要的区别,即Windows NT提供了很多功能强大的Service(服务)。这些Service可以随着NT的启动而自启动,也可以让用户通过控制面板启动,还可以被Win32应用程序起停。甚至在没有用户登录系统的情况下,这些Service也能执行。许多FTP、WWW服务器和数据库就是以Service的形式存在于NT上,从而实现了无人值守。就连最新版的“黑客”程序Back2000也是以Service形式在NT上藏身的。由于Service的编程较复杂,许多开发者想开发自己的Service但往往都望而却步。鉴于此,下面我们就从头到尾来构造一个全新的Service,读者只要在程序中注明的地方加上自己的代码,那么就可以轻松拥有一个自己的Service。在编写Service之前,先介绍一下几个重要的函数:1. SC_HANDLE OpenSCManager( LPCTSTR lpMachineName,LPCTSTR lpDatabaseName, DWORD dwDesiredAccess)OpenSCManager 函数打开指定计算机上的service controlmanager database。其中参数lpMachineName指定计算机名,若为空则指定为本机。LpDatabaseName为指定要打开的service control manager database名, 默认为空。dwDesiredAccess指定操作的权限, 可以为下面取值之一:SC_MANAGER_ALL_ACCESS //所有权限SC_MANAGER_CONNECT //允许连接到service control manager databaseSC_MANAGER_CREATE_SERVICE //允许创建服务对象并把它加入databaseSC_MANAGER_ENUMERATE_SERVICE //允许枚举database 中的ServiceSC_MANAGER_LOCK //允许锁住databaseSC_MANAGER_QUERY_LOCK_STATUS //允许查询database的封锁信息函数执行成功则返回一个指向service control manager