• Delphi服务程序注册与卸载


    Delphi服务程序注册与卸载

    uses winsvc;
    function InstallService(ServiceName, DisplayName, FileName: string): boolean;
    var
    SCManager,Service: THandle;
    Args: pchar;
    begin
    Result := False;
    SCManager := OpenSCManager(nil, nil, SC_MANAGER_ALL_ACCESS);
    if SCManager = 0 then Exit;
    try
       Service := CreateService(SCManager, //句柄
                       PChar(ServiceName), //服务名称
                       PChar(DisplayName), //显示服务名
                       SERVICE_ALL_ACCESS, //服务访问类型
                       SERVICE_WIN32_OWN_PROCESS, //服务类型 or SERVICE_INTERACTIVE_PROCESS
                       SERVICE_AUTO_START, //自动启动服务
                       SERVICE_ERROR_IGNORE, //忽略错误
                       PChar(FileName), //启动的文件名
                       nil, //name of load ordering group (载入组名) 'LocalSystem'
                       nil, //标签标识符
                       nil, //相关性数组名
                       nil, //帐户(当前)
                       nil); //密码(当前)

       Args := nil;
       StartService(Service, 0, Args);
       CloseServiceHandle(Service);
    finally
       CloseServiceHandle(SCManager);
    end;
    Result := True;
    end;

    procedure UninstallService(ServiceName: string);
    var
    SCManager,Service: THandle;
    ServiceStatus: SERVICE_STATUS;
    begin
    SCManager := OpenSCManager(nil, nil, SC_MANAGER_ALL_ACCESS);
    if SCManager = 0 then Exit;
    try
       Service := OpenService(SCManager, PChar(ServiceName), SERVICE_ALL_ACCESS);
       ControlService(Service, SERVICE_CONTROL_STOP, ServiceStatus);
       DeleteService(Service);
       CloseServiceHandle(Service);
    finally
       CloseServiceHandle(SCManager);
    end;
    end;

    procedure ServiceCtrlHandler(Control: dword); stdcall;
    begin
    case Control of
       SERVICE_CONTROL_STOP:
       begin
         Stopped := True;
         Status.dwCurrentState := SERVICE_STOPPED;
       end;
       SERVICE_CONTROL_PAUSE:
       begin
         Paused := True;
         Status.dwcurrentstate := SERVICE_PAUSED;
       end;
       SERVICE_CONTROL_CONTINUE:
       begin
         Paused := False;
         Status.dwCurrentState := SERVICE_RUNNING;
       end;
       SERVICE_CONTROL_INTERROGATE: ;
       SERVICE_CONTROL_SHUTDOWN: Stopped := True;
    end;
    SetServiceStatus(StatusHandle, Status);
    end;

  • 相关阅读:
    获取远程服务器的资源情况
    【Hibernate】Hibernate系列8之管理session
    【Hibernate】Hibernate系列7之二级缓存
    【Hibernate】Hibernate系列6之HQL查询
    【Hibernate】Hibernate系列5之检索策略
    【Hibernate】Hibernate系列4之配置文件详解
    【Hibernate】Hibernate系列3之配置文件详解
    【Hibernate】Hibernate系列2之Session详解
    【Hibernate】Hibernate系列1之概述
    【云计算】Dockerfile、镜像、容器快速入门
  • 原文地址:https://www.cnblogs.com/hnxxcxg/p/2940879.html
Copyright © 2020-2023  润新知