windwos 2000及NT 服务注册的具体实现
2008-04-09 04:27:19来源:互联网 阅读 ()
windwos 2000及NT 服务注册的具体实现
{**************************************************************}
{*******************************************************}
{* 程序编写: 陈林茂
{* 编写日期: 2003-01-05
{* 联系作者: linmaochen@sohu.com
{*******************************************************}
interface
uses
Windows,Classes,SysUtils,Winsvc,nb30,winsock;
Type
{服务句柄信息}
TScmInfo=Record
HostName :String;
DataBaseName:String;
DesireAccess :DWORD;
End;
{服务信息}
TSvcInfo=Record
HscManager :Integer;
ServerName :String; //服务名
DisplayName :String; //服务的显示名
DesireAccess :DWORD; //
ServiceType :Dword; //服务的类别
StartType :Dword; //服务的启动方式
ErrorControl :Dword; //服务错误控制方式
BinaryPathName :String; //服务执行文件的具体路径
LoadOrderGroup :String;
TagId :Dword;
Dependencies :String; //依赖:有多个依赖的服务时,中间以空格隔开}
ServerStartName :String;
Password :String;
End;
//需要注册的服务信息数组
SvcArray=Array[1..20] of TSvcInfo;
Type
{服务控制类}
TService=Class(TObject)
Private
Scm_Info :TScmInfo;
Svc_Info :TSvcInfo;
ScmHandle :Integer;
{服务句柄}
SvcHandle :Integer;
Public
Constructor Create();
Destructor Destroy();Override;
Function SetScmInfo():Boolean;
Function OpenScmHandle():Integer;
Function SetServiceInfo(TmpSvc :TsvcInfo):Boolean;
Function CreateService():Boolean;
{删除一服务}
Function Delete_AService(ServiceName :String):Boolean;
{建立一服务}
Function Open_Service(ServiceName :String):Boolean;
{/////////////////////////////////////////////////////////////////////}
{// 函数名称: IsSvcExists()
{// 函数功能: 判断系统中相关的服务是否存在
{// 参数信息: 需要判断的服务名
{// 返回值: TRUE : WINDOWS 中的服务已存在,FALSE :WINDOWS 中的服务不存在
{//
{/////////////////////////////////////////////////////////////////////}
Function isSvcExists(ServiceName :string):Boolean;
{/////////////////////////////////////////////////////////////////////////}
{// 函数名称: Start_Service()
{// 函数功能: 启动相关的服务进程
{// 参数信息: 需要启动的服务名
{// 返回值: TRUE :服务已经启动;FALSE:服务启动失败;
{/////////////////////////////////////////////////////////////////////////}
Function Control_Service(ServiceName : String; controlType :integer):Boolean;
{/////////////////////////////////////////////////////////////////////////}
{// 函数名称: IsServiceStart()
{// 函数功能: 判断服务是否启动
{// 参数信息: 需要判断的服务名
{// 返回值: TRUE :服务已经启动; FALSE :服务已停止
{/////////////////////////////////////////////////////////////////////////}
Function IsServiceStart(ServiceName:String):Boolean;
End;
implementation
{ TService }
constructor TService.Create;
begin
try
ScmHandle :=0;
SetScmInfo();
ScmHandle:=OpenSCManager(PChar(Scm_Info.HostName),Nil,Scm_Info.DesireAccess);
Except
End;
end;
{建立一服务}
function TService.CreateService(): Boolean;
Var
i :Integer;
begin
Try
OpenScmHandle();
svc_info.HscManager := ScmHandle;
Result :=False;
SvcHandle :=CreateService(svc_Info.HscManager ,Pchar(svc_Info.ServerName),Pchar(Svc_Info.DisplayName),Svc_info.DesireAccess ,
svc_INfo.ServiceType ,Svc_Info.StartType ,Svc_Info.ErrorControl,pchar(Svc_Info.BinaryPathName),
pchar(''''''''),LPDWORD(0),Pchar(Svc_Info.Dependencies),Pchar(Svc_info.ServerStartName),Pchar(Svc_Info.Password));
If SvcHandle <> 0 Then
Begin
Result :=True;
CloseServiceHandle(SvcHandle);
End ;
I:=i 1;
Except
End;
end;
{注销一服务}
function TService.Delete_AService(ServiceName: String): Boolean;
Var
RHandle:Integer;
rc :Boolean;
begin
Try
OpenScmHandle();
Result :=False;
If ScmHandle<>0 Then
Begin
RHandle :=OpenService(ScmHandle,PChar(ServiceName),SERVICE_ALL_ACCESS );
If RHandle <>0 Then
Begin
Rc :=DeleteService(Rhandle);
Result :=Rc;
{关闭句柄}
CloseServiceHandle(RHandle);
End Else Result :=True;
End;
Except
End;
end;
destructor TService.Destroy;
begin
try
CloseServiceHandle(ScmHandle);
Except
End;
end;
{打开数据库的句柄}
function TService.isSvcExists(ServiceName: string): Boolean;
Var
RHandle:Integer;
rc :Boolean;
begin
Try
OpenScmHandle();
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash