资源描述:
《windowsnt下service编程》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、WindowsNT下Service的编程日期:2005-01-25 作者:未知 来源:转载 浏览次数:4 【字体:小 大】----此例中原程序使用Delphi编制,老妖将之改成CB版。:D----WindowsNTServer提供多种功能强大的服务(Service),例如FTP,WWW或远程登录服务,另外常用的数据库服务器也是以Service的形式存在于NTServer上的,如SybaseSQLServerForNT。Service一般在NT启动时自动启动,在NT关机时停止。但是有时用户可能想手工启动、暂停、停止某项Service,这就需
2、要在控制面板中进行配置,对于不太熟悉NT的用户来说比较困难;对于软件开发人员,有时需要在软件中访问和操作某项Service,甚至可能需要开发新Service的提供给用户使用。上面两种情况都可以通过对Service的编程来解决。对Service的编程涉及到NT的内核,比较复杂且相关资料较少,给软件开发人员带来很多困难,笔者通过对WindowsNT的API的分析找到了相应的编程方法,再此介绍给大家。----在WindowsNT下,各种Service都存在servicecontrolmanagerdatabase中,因此我们可以通过对serviceco
3、ntrolmanagerdatabase进行操作来实现对Service的编程。下面介绍常用的函数:1:SC_HANDLEOpenSCManager(LPCTSTRlpszMachineName,LPCTSTRlpszDatabaseName,DWORDfdwDesiredAccess);----OpenSCManager函数打开指定计算机上的servicecontrolmanagerdatabase。其中参数lpszMachineName指定计算机名,若为空则指定为本机。参数lpszDatabaseName指定要打开的servicecontrol
4、managerdatabase,默认为空。----参数fdwDesiredAccess指定操作的权限,可以为下面取值之一SC_MANAGER_ALL_ACCESS //所有权限SC_MANAGER_CONNECT //允许连接servicecontrolmanagerSC_MANAGER_CREATE_SERVICE //允许创建服务对象并把它加入servicecontrolmanagerdatabaseSC_MANAGER_ENUMERATE_SERVICE//允许枚举servicecontrolmanagerdatabase中
5、的服务SC_MANAGER_LOCK //允许锁住servicecontrolmanagerdatabaseSC_MANAGER_QUERY_LOCK_STATUS//允许获取servicecontrolmanagerdatabase的封锁信息----函数返回值:函数执行成功则返回一个指向servicecontrolmanagerdatabase的句柄,失败则返回NULL。2:SC_HANDLEOpenService(SC_HANDLEschSCManager,LPCTSTRlpszServiceName,DWORDfdwDesire
6、dAccess);----OpenService函数打开指定的Service。----其中参数schSCManager是指向servicecontrolmanagerdatabase的句柄,由OpenSCManager函数返回。----参数lpszServiceName要打开的服务的名字,注意大小写。----参数fdwDesiredAccess指定操作的权限,可以为下面取值之一SERVICE_ALL_ACCESS //所有权限SERVICE_CHANGE_CONFIG //允许更改服务的配置SERVICE_ENUMERATE_DE
7、PENDENTS //允许获取依赖于该服务的其他服务SERVICE_INTERROGATE //允许立即获取服务状态SERVICE_PAUSE_CONTINUE //允许暂停和唤醒服务SERVICE_QUERY_CONFIG //允许获取服务配置SERVICE_QUERY_STATU //允许通过访问servicecontrolmanager获取服务状态SERVICE_START //允许启动服务SERVICE_STOP //允许停止服务SERVICE_USER_DEFINE_CO
8、NTROL //允许用户指定特殊的服务控制码----函数返回值:函数执行成功则返回指向某项服务的句柄,失败则返回NULL。3:BOOL