delphi编程启动服务停止服务新建服务的方法
来源:互联网 发布:阿里云域名绑定服务器 编辑:程序博客网 时间:2024/04/30 20:57
本文主要讲解了如何使用delphi新建服务,停止系统服务,以及获取服务状态和新建系统服务器的方法,以下是关键代码:
unit Servicescontrol;
interface
uses Windows,Messages,SysUtils,Winsvc,Dialogs;
function StartServices(Const SvrName:String):Boolean;
function StopServices(Const SvrName:String):Boolean;
function QueryServiceStatu(Const SvrName: String):String;
function CreateServices(Const SvrName,FilePath:String):Boolean;
function DeleteServices(Const SvrName: String):Boolean;
implementation
//开启服务
function StartServices(Const SvrName: String): Boolean;
var
a,b:SC_HANDLE;
c:PChar;
begin
Result:=False;
a:=OpenSCManager(nil,nil,SC_MANAGER_ALL_ACCESS);
if a <=0 then Exit;
b:=OpenService(a,PChar(SvrName),SERVICE_ALL_ACCESS);
if b <=0 then Exit;
try
Result:=StartService(b,0,c);
CloseServiceHandle(b);
CloseServiceHandle(a);
except
CloseServiceHandle(b);
CloseServiceHandle(a);
Exit;
end;
end;
//停止服务
function StopServices(Const SvrName: String): Boolean;
var
a,b: SC_HANDLE;
d: TServiceStatus;
begin
Result := False;
a :=OpenSCManager(nil,nil,SC_MANAGER_ALL_ACCESS);
if a <=0 then Exit;
b:=OpenService(a,PChar(SvrName),SERVICE_ALL_ACCESS);
if b <=0 then Exit;
try
Result:=ControlService(b,SERVICE_CONTROL_STOP,d);
CloseServiceHandle(a);
CloseServiceHandle(b);
except
CloseServiceHandle(a);
CloseServiceHandle(b);
Exit;
end;
end;
//查询当前服务的状态
function QueryServiceStatu(Const SvrName: String): String;
var
a,b: SC_HANDLE;
d: TServiceStatus;
begin
Result := '未安装';
a := OpenSCManager(nil,nil,SC_MANAGER_ALL_ACCESS);
if a <=0 then Exit;
b := OpenService(a,PChar(SvrName),SERVICE_ALL_ACCESS);
if b <= 0 then Exit;
try
QueryServiceStatus(b,d);
if d.dwCurrentState = SERVICE_RUNNING then
Result := '启动' //Run
else if d.dwCurrentState = SERVICE_RUNNING then
Result := 'Wait' //Runing
else if d.dwCurrentState = SERVICE_START_PENDING then
Result := 'Wait' //Pause
else if d.dwCurrentState = SERVICE_STOP_PENDING then
Result := '停止' //Pause
else if d.dwCurrentState = SERVICE_PAUSED then
Result := '暂停' //Pause
else if d.dwCurrentState = SERVICE_STOPPED then
Result := '停止' //Stop
else if d.dwCurrentState = SERVICE_CONTINUE_PENDING then
Result := 'Wait' //Pause
else if d.dwCurrentState = SERVICE_PAUSE_PENDING then
Result := 'Wait'; //Pause
CloseServiceHandle(a);
CloseServiceHandle(b);
except
CloseServiceHandle(a);
CloseServiceHandle(b);
Exit;
end;
end;
{建立服务}
function CreateServices(Const SvrName,FilePath: String): Boolean;
var
a,b:SC_HANDLE;
begin
Result:=False;
if FilePath ='' then Exit;
a := OpenSCManager(nil,nil,SC_MANAGER_CREATE_SERVICE);
if a <= 0 then Exit;
try
b := CreateService(a,PChar(SvrName),
PChar(SvrName),
SERVICE_ALL_ACCESS,
SERVICE_INTERACTIVE_PROCESS or SERVICE_WIN32_OWN_PROCESS,
SERVICE_AUTO_START,SERVICE_ERROR_NORMAL,
PChar(FilePath),nil,nil,nil,nil,nil);
if b <= 0 then begin
ShowMessage( SysErrorMessage( GetlastError ));
Exit;
end;
CloseServiceHandle(a);
CloseServiceHandle(b);
Result := True;
except
CloseServiceHandle(a);
CloseServiceHandle(b);
Exit;
end;
end;
{卸载服务}
function DeleteServices(Const SvrName: String): Boolean;
var
a,b:SC_HANDLE;
begin
Result:=False;
a := OpenSCManager(nil,nil,SC_MANAGER_ALL_ACCESS);
if a <= 0 then Exit;
b :=OpenService(a,PChar(SvrName),STANDARD_RIGHTS_REQUIRED);
if b <= 0 then Exit;
try
Result := DeleteService(b);
if not Result then
ShowMessage(SysErrorMessage(GetlastError));
CloseServiceHandle(b);
CloseServiceHandle(a);
except
CloseServiceHandle(b);
CloseServiceHandle(a);
Exit;
end;
end;
end.
调用方法:
{启动服务}
StartServices(服务名);
{停止服务}
StopServices(服务名);
{新建服务}
CreateServices(服务名,exe文件路径);
{删除服务}
DeleteServices(服务名);
{获取服务状态}
string:=QueryServiceStatu(服务名);
- delphi编程启动服务停止服务新建服务的方法
- 使用delphi新建服务,停止系统服务,以及获取服务状态和新建系统服务器的方法
- delphi启动停止windows服务
- 启动/停止MySQL服务的方法
- Delphi启动或者停止windows服务的函数
- mysql服务的注册,启动、停止、注销。 [delphi代码实现]
- JBOSS服务的启动、停止
- 服务的启动与停止
- 启动和停止服务
- 启动/停止mysql服务
- 批处理启动停止服务
- dos启动停止服务
- mysql 启动 停止 服务
- cmd 启动停止服务
- windows启动停止服务
- ServiceController启动停止服务
- 启动,停止,配置服务
- sybase启动停止服务
- 将eclipse java程序打包成jar的总结(包括工程中没有引用外部jar包和有引用外部jar包两种情况)
- Android:Fast ListView scroll without ViewHolder Pattern
- CSVreader和POI操作用法比较,以及CSVReader的坑
- fork和vfork与进程和子进程
- Amazon S3云存储服务器的功能及编程接口
- delphi编程启动服务停止服务新建服务的方法
- maven常用开源软件maven坐标
- 从排序开始(四)快速排序
- Android _ Gallery
- 黑马程序员-银行调度系统
- 滑动窗口机制
- NSNotification技巧
- c++ 时间戳、日期格式、字符串
- 亲情600