C++Builder在WIN2000环境下编制Service

C++Builder在WIN2000环境下编制Service,第1张

C++Builder在WIN2000环境下编制Service,第2张

Windows 2000和Windows 9x有一个很重要的区别,就是Windows 2000提供了很多强大的服务。这些服务可以由WIN2000启动,由用户通过控制面板启动,由Win32应用程序启动和停止。即使没有用户登录系统,也可以执行这些服务。许多FTP、WWW服务器和数据库以服务的形式存在于WIN2000上,实现了无人值守。甚至最新版本的“黑客”程序Back Orifice 2000也是以服务的形式隐藏在WIN2000上。因为服务的编程比较复杂,很多开发者都想开发自己的服务,但往往望而却步。有鉴于此,让我们从头到尾构造一个全新的服务。读者只要在程序指示的地方添加自己的代码,就可以轻松拥有自己的服务。在编写服务之前,我们先介绍一些重要的函数:

1.

sc _ handle opensc manager(lpctstr LP计算机名,
lpctstr LP数据库名,dword dwdesireddaccess)
opensc manager函数打开指定计算机上的服务控制管理器数据库。
参数lpMachineName指定计算机名,如果是空,则指定为本地计算机。LpDatabaseName是指
要打开的服务控制管理器数据库的名称,默认为空。DwDesiredAccess指定
操作的权限,可以取下列值之一:
SC_MANAGER_ALL_ACCESS //所有权限
SC_MANAGER_CONNECT //允许连接到服务控制管理器数据库
SC _ MANAGER _ create _ service//允许创建服务对象并将它们添加到数据库
SC _ MANAGER _ enumerate _ service//允许枚举数据库中的服务
SC _ MANAGER _ lock//允许锁定数据库
SC _ MANAGER _ query _ lock _ status//


如果成功,该函数返回服务控制管理器数据库的句柄,如果不成功,则返回NULL。注意:WIN2000通过一个名为服务控制管理器数据库的数据库管理所有服务,因此对服务的任何操作都应该打开该数据库。

2.

SC _ HANDLE create service(SC _ HANDLE HSC manager,
LPCTSTR lpServiceName,
LPCTSTR lpDisplayName,
DWORD dwdesireddaccess,
DWORD dwServiceType,
DWORD dwStartType,
DWORD dwErrorControl,
LPCTSTR lpBinaryPathName,
LPCTSTR lpLoadOrderGroup,
LPDWORD lpdwTagId,[/br


CreateService函数生成新服务。参数hSCManager是服务控制管理器数据库的句柄,由OpenSCManager返回。Lpname是服务的名称,lpDisplayName是服务的显示名称,dwDesiredAccess是访问权限。本程序中使用了SERVICE_ALL_ACCESS。WServiceType,指示服务类型。在这个程序中,使用了service _ win32 _ own _ process | service _ interactive _ process。DwStartType是服务启动方式,本程序采用自启动,即dwStartType等于SERVICE_AUTO_START。DwErrorControl解释了当服务在启动过程中出错时应采取的措施。本程序采用SERVICE_ERROR_IGNORE,即错误被忽略,读者可以换成其他的。LpBinaryPathName表示服务本体程序的路径名。其余五个参数通常可以设置为空。如果函数调用成功,将返回这个新服务的句柄,如果调用失败,将返回NULL。与这个函数相对应的是DeleteService( hService),它删除指定的服务。

3.

SC _ HANDLE open service(SC _ HANDLE HSC manager,LPCTSTR lpServiceName,DWORD dwdesireddaccess)


open service函数打开指定的服务。参数hSCManager是服务控制管理器数据库的句柄,由OpenSCManager返回。Lpname是服务的名称,dwDesiredAccess是访问权限。有许多可选值。读者可以参考SDK帮助。如果函数调用成功,将返回打开的服务句柄;如果失败,它将返回NULL。

4.

BOOL StartService(SC _ HANDLE h service,DWORD dwNumServiceArgs,LPCTSTR * lpServiceArgVectors)


startService函数启动指定的服务。参数hService是服务的句柄,由OpenService返回。DwNumServiceAr是启动服务所需的参数数。LpszServiceArgs是启动服务所需的参数。如果成功,该函数返回True,如果失败,则返回False。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » C++Builder在WIN2000环境下编制Service

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情