一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

使用delphi新建服務,停止系統服務,以及獲取服務狀態(tài)和新建系統服務器的方法

 instl 2014-11-11

bianxie

  1. 本文主要講解了如何使用delphi新建服務,停止系統服務,以及獲取服務狀態(tài)和新建系統服務器的方法,以下是關鍵代碼:  
  2.   
  3. unit Servicescontrol;  
  4.      
  5. interface    
  6.   uses Windows,Messages,SysUtils,Winsvc,Dialogs;  
  7.      
  8.   function  StartServices(Const  SvrName:String):Boolean;  
  9.   function  StopServices(Const  SvrName:String):Boolean;  
  10.   function  QueryServiceStatu(Const SvrName:   String):String;  
  11.   function  CreateServices(Const SvrName,FilePath:String):Boolean;    
  12.   function  DeleteServices(Const SvrName: String):Boolean;    
  13.      
  14.   implementation    
  15.   
  16.      
  17.   //開啟服務    
  18.   function StartServices(Const   SvrName:   String):   Boolean;  
  19.   var    
  20.       a,b:SC_HANDLE;    
  21.         c:PChar;    
  22.   begin    
  23.         Result:=False;    
  24.      
  25.         a:=OpenSCManager(nil,nil,SC_MANAGER_ALL_ACCESS);    
  26.      
  27.         if a <=0 then  Exit;    
  28.      
  29.         b:=OpenService(a,PChar(SvrName),SERVICE_ALL_ACCESS);    
  30.      
  31.         if b <=0  then  Exit;    
  32.             try    
  33.               Result:=StartService(b,0,c);    
  34.               CloseServiceHandle(b);    
  35.               CloseServiceHandle(a);    
  36.         except    
  37.               CloseServiceHandle(b);    
  38.               CloseServiceHandle(a);    
  39.               Exit;    
  40.         end;    
  41.   end;    
  42.      
  43.      
  44.   //停止服務    
  45.   function   StopServices(Const   SvrName:   String):   Boolean;  
  46.   var  
  47.         a,b:   SC_HANDLE;    
  48.         d:   TServiceStatus;    
  49.   begin    
  50.         Result := False;    
  51.      
  52.         a :=OpenSCManager(nil,nil,SC_MANAGER_ALL_ACCESS);    
  53.      
  54.         if a <=0 then Exit;    
  55.      
  56.         b:=OpenService(a,PChar(SvrName),SERVICE_ALL_ACCESS);    
  57.      
  58.         if b <=0  then  Exit;    
  59.             try    
  60.               Result:=ControlService(b,SERVICE_CONTROL_STOP,d);    
  61.                CloseServiceHandle(a);    
  62.               CloseServiceHandle(b);    
  63.         except    
  64.               CloseServiceHandle(a);    
  65.               CloseServiceHandle(b);    
  66.               Exit;    
  67.         end;    
  68.   end;    
  69.      
  70.      
  71.   //查詢當前服務的狀態(tài)    
  72.   function  QueryServiceStatu(Const   SvrName:   String):   String;    
  73.   var    
  74.         a,b:   SC_HANDLE;    
  75.         d:   TServiceStatus;    
  76.   begin    
  77.         Result := '未安裝';    
  78.      
  79.         a := OpenSCManager(nil,nil,SC_MANAGER_ALL_ACCESS);    
  80.      
  81.         if a <=0 then  Exit;    
  82.      
  83.         b := OpenService(a,PChar(SvrName),SERVICE_ALL_ACCESS);    
  84.      
  85.         if  b  <= 0  then  Exit;    
  86.             try    
  87.               QueryServiceStatus(b,d);    
  88.                      if   d.dwCurrentState     =   SERVICE_RUNNING   then              
  89.                     Result   :=   '啟動'       //Run    
  90.               else   if   d.dwCurrentState     =   SERVICE_RUNNING   then    
  91.                     Result   :=   'Wait'       //Runing    
  92.               else   if   d.dwCurrentState     =   SERVICE_START_PENDING then    
  93.                     Result   :=   'Wait'       //Pause    
  94.               else   if   d.dwCurrentState     =   SERVICE_STOP_PENDING     then    
  95.                     Result   :=   '停止'       //Pause    
  96.               else   if   d.dwCurrentState     =   SERVICE_PAUSED   then    
  97.                     Result   :=   '暫停'       //Pause    
  98.               else   if   d.dwCurrentState     =   SERVICE_STOPPED   then    
  99.                     Result   :=   '停止'     //Stop    
  100.               else   if   d.dwCurrentState     =   SERVICE_CONTINUE_PENDING     then    
  101.                     Result   :=   'Wait'       //Pause    
  102.               else   if   d.dwCurrentState     =   SERVICE_PAUSE_PENDING   then    
  103.                     Result   :=   'Wait';       //Pause    
  104.      
  105.               CloseServiceHandle(a);    
  106.               CloseServiceHandle(b);    
  107.         except    
  108.               CloseServiceHandle(a);    
  109.               CloseServiceHandle(b);    
  110.               Exit;    
  111.         end;    
  112.   end;    
  113.      
  114.      
  115.   {建立服務}    
  116.   function  CreateServices(Const SvrName,FilePath:   String):   Boolean;    
  117.   var    
  118.         a,b:SC_HANDLE;    
  119.   begin    
  120.         Result:=False;    
  121.             if  FilePath   =''   then   Exit;    
  122.      
  123.         a   :=   OpenSCManager(nil,nil,SC_MANAGER_CREATE_SERVICE);    
  124.      
  125.         if   a   <=   0   then   Exit;    
  126.         try    
  127.               b   :=   CreateService(a,PChar(SvrName),    
  128.                PChar(SvrName),    
  129.                SERVICE_ALL_ACCESS,    
  130.                SERVICE_INTERACTIVE_PROCESS   or   SERVICE_WIN32_OWN_PROCESS,    
  131.                SERVICE_AUTO_START,SERVICE_ERROR_NORMAL,    
  132.                PChar(FilePath),nil,nil,nil,nil,nil);    
  133.                   if   b   <=   0   then   begin    
  134.                     ShowMessage(   SysErrorMessage(   GetlastError   ));    
  135.                     Exit;    
  136.               end;    
  137.                   CloseServiceHandle(a);    
  138.               CloseServiceHandle(b);    
  139.                  
  140.               Result   :=   True;    
  141.         except    
  142.               CloseServiceHandle(a);    
  143.               CloseServiceHandle(b);    
  144.               Exit;    
  145.         end;    
  146.   end;    
  147.      
  148.      
  149.   {卸載服務}    
  150.   function   DeleteServices(Const   SvrName:   String):   Boolean;    
  151.   var    
  152.         a,b:SC_HANDLE;    
  153.   begin    
  154.         Result:=False;    
  155.             a := OpenSCManager(nil,nil,SC_MANAGER_ALL_ACCESS);    
  156.             if a <= 0 then  Exit;    
  157.             b :=OpenService(a,PChar(SvrName),STANDARD_RIGHTS_REQUIRED);    
  158.             if b <= 0 then Exit;    
  159.             try    
  160.               Result := DeleteService(b);    
  161.      
  162.               if not Result then    
  163.                     ShowMessage(SysErrorMessage(GetlastError));    
  164.                CloseServiceHandle(b);    
  165.               CloseServiceHandle(a);    
  166.             except    
  167.               CloseServiceHandle(b);    
  168.               CloseServiceHandle(a);    
  169.               Exit;    
  170.         end;    
  171.   end;    
  172.   end.  
  173.   
  174. 調用方法:  
  175.   
  176.    {啟動服務}  
  177.        StartServices(服務名);  
  178.    {停止服務}  
  179.        StopServices(服務名);  
  180.    {新建服務}  
  181.        CreateServices(服務名,exe文件路徑);  
  182.    {刪除服務}  
  183.          DeleteServices(服務名);  
  184.    {獲取服務狀態(tài)}  
  185.          string:=QueryServiceStatu(服務名);  


    本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯系方式、誘導購買等信息,謹防詐騙。如發(fā)現有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    人妻乱近亲奸中文字幕| 99久久免费中文字幕| 九九蜜桃视频香蕉视频| 国产av大片一区二区三区| 中文字幕中文字幕在线十八区 | 福利视频一区二区三区| 在线观看那种视频你懂的| 日韩毛片视频免费观看| 福利一区二区视频在线| 亚洲精品中文字幕熟女| 狠狠亚洲丁香综合久久| 国产在线一区二区三区不卡| 久久永久免费一区二区| 午夜国产成人福利视频| 日本黄色录像韩国黄色录像| 亚洲熟女精品一区二区成人| 91精品视频全国免费| 日本加勒比不卡二三四区| 久热人妻中文字幕一区二区| 国产又粗又长又爽又猛的视频| 日韩免费成人福利在线| 欧美日韩校园春色激情偷拍| 欧美一级黄片免费视频 | 太香蕉久久国产精品视频| 激情亚洲内射一区二区三区| 国产情侣激情在线对白| 日韩欧美91在线视频| 黄片免费在线观看日韩| 日本成人三级在线播放| 亚洲一区二区三区熟女少妇| 大香蕉大香蕉手机在线视频| 国产日韩欧美在线亚洲| 婷婷色香五月综合激激情| 黄色日韩欧美在线观看| 精品国产日韩一区三区| 国产精品日本女优在线观看| 欧美激情一区=区三区| 日韩高清毛片免费观看| 人妻久久这里只有精品| 91人妻人澡人人爽人人精品| 一区二区三区亚洲天堂|