Delphi 系统服务

安装服务程序

 function TForm1.InstallService: Boolean;
var
  schSCManager,schService:THANDLE;
  strDir:array[0..1023]of char;
  lpszBinaryPathName:PChar;
  args: pchar;
begin
  schSCManager:=OpenSCManager(nil,nil,SC_MANAGER_ALL_ACCESS);

//打开服务控制管理器
  if schSCManager=0 then
  begin
    MessageBox(0,'联接服务控制管理器失败','Error',MB_OK);
    Result:=false;
    exit;
  end;
  GetCurrentDirectory(1024,strDir); // 取到应用程序所在的目录
  strlcat(strDir,'/AutoSendService.exe',1024); // 当前目录下的服务应用 strDir
  lpszBinaryPathName:=strDir;
  schService:=CreateService(
    schSCManager,// 服务控制管理句柄
    'ThkEmailAutoSend', // 服务名称 需要和 服务应用名 相同
    'ThkEmailAutoSend', // 显示的服务名称
    SERVICE_ALL_ACCESS, // 存取权利
    SERVICE_WIN32_OWN_PROCESS or SERVICE_INTERACTIVE_PROCESS , // 服务类型//如果服务类型是SERVICE_WIN32_SHARE_PROCESS,通常在初始化所有服务之后再调用它;SERVICE_KERNEL_DRIVER,// 表示加载的服务是驱动程序;

值名称值设置值设置说明
启动0 = SERVICE_BOOT_STARTNtldr 或 Osloader 预加载驱动程序以便计算机启动时它就在内存中。
这些驱动程序刚好在 SERVICE_SYSTEM_START 驱动程序之前启动。
启动1 = SERVICE_SYSTEM_START驱动程序在 SERVICE_BOOT_START 驱动程序初始化后加载和初始化。
启动2 = SERVICE_AUTO_START服务控制管理器 (SCM) 启动驱动程序或服务。
启动3 = SERVICE_DEMAND_STARTSCM 必须按需启动驱动程序或服务。
启动4 = SERVICE_DISABLED驱动程序或服务不加载或初始化。
类型1 = SERVICE_KERNEL_DRIVER设备驱动程序。
类型2 = SERVICE_FILE_SYSTEM_DRIVER 内核模式文件系统驱动程序。
类型8 = SERVICE_RECOGNIZER_DRIVER文件系统识别器驱动程序。


    SERVICE_AUTO_START, // 启动类型
    SERVICE_ERROR_NORMAL, // 错误控制类型 ,Normal为记录入日志,不弹出,如果是更严格的控制类型则弹出错误
    lpszBinaryPathName, // 服务程序
    nil, // 组服务名称
    nil, // 组标识
    nil, // 依赖的服务
    nil, // 启动服务帐号
    nil); // 启动服务口令

  if schService = 0 then
  begin
    MessageBox(0,'无法建立指定的服务对象','Error',MB_OK);
    Result:=false;
    exit;
  end;
  args := nil;
  StartService(schService, 0, args);
  CloseServiceHandle(schService);
  MessageBox(0,'已经成功地安装了服务对象','信息',MB_OK);
  Result:=true;
end;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值