• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Delphi启动/停止Windows服务,启动类型修改为"自动"

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
  1. unit U_StartServices;
  2. interface
  3. uses
  4.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  5.   Dialogs, WinSVC, StdCtrls;
  6. type
  7.   TForm1 = class(TForm)
  8.     btn_StartServices: TButton;
  9.     btn_StopServices: TButton;
  10.     procedure btn_StartServicesClick(Sender: TObject);
  11.     procedure btn_StopServicesClick(Sender: TObject);
  12.   private
  13.     { Private declarations }
  14.   public
  15.     { Public declarations }
  16.   end;
  17. var
  18.   Form1: TForm1;
  19. function StartServices(const SvrName: string): Boolean;
  20. implementation
  21. {$R *.dfm}
  22. //开启服务
  23. function StartServices(const SvrName: string): Boolean;
  24. var
  25.   SCH, SvcSCH: SC_HANDLE;
  26.   arg: PChar;
  27.   dwStartType: DWORD;
  28. begin
  29.   Result := False;
  30.   SCH := OpenSCManager(nil, nil, SC_MANAGER_ALL_ACCESS);
  31.   if SCH <= 0 then Exit;
  32.   SvcSCH := OpenService(SCH, PChar(SvrName), SERVICE_ALL_ACCESS);
  33.   if (ChangeServiceConfig(
  34.     SvcSCH, //   handle   of   service
  35.     SERVICE_NO_CHANGE, //SERVICE_NO_CHANGE,   //   service   type:   no   change
  36.     SERVICE_AUTO_START, //   change   service   start   type
  37.     SERVICE_NO_CHANGE, //   error   control:   no   change
  38.     nil, //   binary   path:   no   change
  39.     nil, //   load   order   group:   no   change
  40.     nil, //   tag   ID:   no   change
  41.     nil, //   dependencies:   no   change
  42.     nil, //   account   name:   no   change
  43.     nil, //   password:   no   change
  44.     nil)) then
  45.     showmessage('Auto Start OK')
  46.   else
  47.     showmessage('Auto Start Error');
  48.     if SvcSCH <= 0 then Exit;
  49.   try
  50.     Result := StartService(SvcSCH, 0, arg);
  51.     CloseServiceHandle(SvcSCH);
  52.     CloseServiceHandle(SCH);
  53.   except
  54.     CloseServiceHandle(SvcSCH);
  55.     CloseServiceHandle(SCH);
  56.     Exit;
  57.   end;
  58. end;
  59. //停止服务
  60. function StopServices(const SvrName: string): Boolean;
  61. var
  62.   SCH, SvcSCH: SC_HANDLE;
  63.   SS: TServiceStatus;
  64. begin
  65.   Result := False;
  66.   SCH := OpenSCManager(nil, nil, SC_MANAGER_ALL_ACCESS);
  67.   if SCH <= 0 then Exit;
  68.   SvcSCH := OpenService(SCH, PChar(SvrName), SERVICE_ALL_ACCESS);
  69.   if SvcSCH <= 0 then Exit;
  70.   try
  71.     Result := ControlService(SvcSCH, SERVICE_CONTROL_STOP, SS);
  72.     CloseServiceHandle(SCH);
  73.     CloseServiceHandle(SvcSCH);
  74.   except
  75.     CloseServiceHandle(SCH);
  76.     CloseServiceHandle(SvcSCH);
  77.     Exit;
  78.   end;
  79. end;
  80. procedure TForm1.btn_StartServicesClick(Sender: TObject);
  81. begin
  82.   if StartServices('PolicyAgent') = true then
  83.     application.MessageBox(PChar('PolicyAgent 服务启动成功'), PChar('服务信息'), MB_ICONINFORMATION)
  84.   else
  85.     application.MessageBox(PChar('PolicyAgent 服务启动失败'), PChar('服务信息'), MB_ICONERROR);
  86. end;
  87. procedure TForm1.btn_StopServicesClick(Sender: TObject);
  88. begin
  89.   if StopServices('PolicyAgent') = true then
  90.     application.MessageBox(PChar('PolicyAgent 服务停止成功'), PChar('服务信息'), MB_ICONINFORMATION)
  91.   else
  92.     application.MessageBox(PChar('PolicyAgent 服务停止成功'), PChar('服务信息'), MB_ICONERROR);
  93. end;
  94. end.
复制代码

 

http://www.appweixin.net/thread-67-1-1.html


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Delphi中关于文件、目录操作的函数发布时间:2022-07-18
下一篇:
Delphi7学习开发控件(继承TGraphicControl只画一条线)发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap