成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

淺談C#安裝服務和卸載服務

開發 后端
本文將簡單談談C#安裝服務和卸載服務,這里將用代碼實例的方式,為大家進行講解,希望本文能對大家理解C#安裝服務和卸載服務有所幫助。

這是一個C#安裝服務和卸載服務的類,有興趣可以看一下.

  1. using System;  
  2. using System.Runtime.InteropServices;  
  3. namespace EAE.MyServiceInstaller  
  4. {  
  5.  
  6.  class ServiceInstaller  
  7.  {  
  8.   #region Private Variables  
  9.   private string _servicePath;  
  10.   private string _serviceName;  
  11.   private string _serviceDisplayName;  
  12.   #endregion Private Variables  
  13.   #region DLLImport  
  14.   [DllImport("advapi32.dll")]  
  15.   public static extern IntPtr OpenSCManager(string lpMachineName,string lpSCDB, int scParameter);  
  16.   [DllImport("Advapi32.dll")]  
  17.   public static extern IntPtr CreateService(IntPtr SC_HANDLE,string lpSvcName,string lpDisplayName,   
  18.    int dwDesiredAccess,int dwServiceType,int dwStartType,int dwErrorControl,string lpPathName,   
  19.    string lpLoadOrderGroup,int lpdwTagId,string lpDependencies,string lpServiceStartName,string lpPassword);  
  20.   [DllImport("advapi32.dll")]  
  21.   public static extern void CloseServiceHandle(IntPtr SCHANDLE);  
  22.   [DllImport("advapi32.dll")]  
  23.   public static extern int StartService(IntPtr SVHANDLE,int dwNumServiceArgs,string lpServiceArgVectors);  
  24.   [DllImport("advapi32.dll",SetLastError=true)]  
  25.   public static extern IntPtr OpenService(IntPtr SCHANDLE,string lpSvcName,int dwNumServiceArgs);  
  26.   [DllImport("advapi32.dll")]  
  27.   public static extern int DeleteService(IntPtr SVHANDLE);  
  28.   [DllImport("kernel32.dll")]  
  29.   public static extern int GetLastError();  
  30.   #endregion DLLImport  
  31. //  ///   
  32. //  /// C#安裝服務應用程序入口.  
  33. //  ///   
  34. //  
  35. //  [STAThread]  
  36. //  static void Main(string[] args)  
  37. //  {  
  38. //  
  39. //   string svcPath;  
  40. //   string svcName;  
  41. //   string svcDispName;  
  42. //   //C#安裝服務程序的路徑  
  43. //   svcPath = @"d:\service\EAEWS.exe";  
  44. //   svcDispName="myEAEWS";  
  45. //   svcName= "myEAEWS";  
  46. //   ServiceInstaller c = new ServiceInstaller();  
  47. //   c.InstallService(svcPath, svcName, svcDispName);  
  48. //   Console.Read();  
  49. //  
  50. //  }  
  51.  
  52.   ///   
  53.   /// 安裝和運行  
  54.   ///   
  55.   /// C#安裝程序路徑.  
  56.   /// 服務名  
  57.   /// 服務顯示名稱.  
  58.   /// 服務安裝是否成功.  
  59.   public bool InstallService(string svcPath, string svcName, string svcDispName)  
  60.   {  
  61.    #region Constants declaration.  
  62.    int SC_MANAGER_CREATE_SERVICE = 0x0002;  
  63.    int SERVICE_WIN32_OWN_PROCESS = 0x00000010;  
  64.    //int SERVICE_DEMAND_START = 0x00000003;  
  65.    int SERVICE_ERROR_NORMAL = 0x00000001;  
  66.    int STANDARD_RIGHTS_REQUIRED = 0xF0000;  
  67.    int SERVICE_QUERY_CONFIG = 0x0001;  
  68.    int SERVICE_CHANGE_CONFIG = 0x0002;  
  69.    int SERVICE_QUERY_STATUS = 0x0004;  
  70.    int SERVICE_ENUMERATE_DEPENDENTS = 0x0008;  
  71.    int SERVICE_START =0x0010;  
  72.    int SERVICE_STOP =0x0020;  
  73.    int SERVICE_PAUSE_CONTINUE =0x0040;  
  74.    int SERVICE_INTERROGATE =0x0080;  
  75.    int SERVICE_USER_DEFINED_CONTROL =0x0100;  
  76.    int SERVICE_ALL_ACCESS = (STANDARD_RIGHTS_REQUIRED |   
  77.     SERVICE_QUERY_CONFIG |  
  78.     SERVICE_CHANGE_CONFIG |  
  79.     SERVICE_QUERY_STATUS |   
  80.     SERVICE_ENUMERATE_DEPENDENTS |   
  81.     SERVICE_START |   
  82.     SERVICE_STOP |   
  83.     SERVICE_PAUSE_CONTINUE |   
  84.     SERVICE_INTERROGATE |   
  85.     SERVICE_USER_DEFINED_CONTROL);  
  86.    int SERVICE_AUTO_START = 0x00000002;  
  87.    #endregion Constants declaration.  
  88.    try 
  89.    {  
  90.     IntPtr sc_handle = OpenSCManager(null,null,SC_MANAGER_CREATE_SERVICE);  
  91.     if (sc_handle.ToInt32() != 0)  
  92.     {  
  93.      IntPtr sv_handle = CreateService(sc_handle,svcName,svcDispName,SERVICE_ALL_ACCESS,SERVICE_WIN32_OWN_PROCESS, SERVICE_AUTO_START,SERVICE_ERROR_NORMAL,svcPath,null,0,null,null,null);  
  94.      if(sv_handle.ToInt32() ==0)  
  95.      {  
  96.       CloseServiceHandle(sc_handle);  
  97.       return false;  
  98.      }  
  99.      else 
  100.      {  
  101.       //試嘗啟動服務  
  102.       int i = StartService(sv_handle,0,null);  
  103.       if(i==0)  
  104.       {  
  105.  
  106.        return false;  
  107.       }  
  108.  
  109.       CloseServiceHandle(sc_handle);  
  110.       return true;  
  111.      }  
  112.     }  
  113.     else 
  114.  
  115.      return false;  
  116.    }  
  117.    catch(Exception e)  
  118.    {  
  119.     throw e;  
  120.    }  
  121.   }  
  122.   ///   
  123.   /// 反安裝服務.  
  124.   ///   
  125.   /// 服務名.  
  126.   public bool UnInstallService(string svcName)  
  127.   {  
  128.    int GENERIC_WRITE = 0x40000000;  
  129.    IntPtr sc_hndl = OpenSCManager(null,null,GENERIC_WRITE);  
  130.    if(sc_hndl.ToInt32() !=0)  
  131.    {  
  132.     int DELETE = 0x10000;  
  133.     IntPtr svc_hndl = OpenService(sc_hndl,svcName,DELETE);  
  134.     if(svc_hndl.ToInt32() !=0)  
  135.     {   
  136.      int i = DeleteService(svc_hndl);  
  137.      if (i != 0)  
  138.      {  
  139.       CloseServiceHandle(sc_hndl);  
  140.       return true;  
  141.      }  
  142.      else 
  143.      {  
  144.       CloseServiceHandle(sc_hndl);  
  145.       return false;  
  146.      }  
  147.     }  
  148.     else 
  149.      return false;  
  150.    }  
  151.    else 
  152.     return false;  
  153.   }  
  154.  }  

C#安裝服務和卸載服務就介紹到這里。

【編輯推薦】

  1. C#枚舉類型使用的一點總結
  2. C#枚舉文件的代碼實現
  3. C# 操作Excel實例淺析
  4. C# 操作Excel之動態創建淺析
  5. C# 操作Excel之Delphi控件方法
責任編輯:彭凡 來源: 51cto.com
相關推薦

2009-08-18 09:06:41

C#對象和集合

2009-08-26 14:27:03

C# Framewor

2009-08-11 13:13:09

C#和Java比較

2009-08-10 10:04:25

C#抽象類C#接口

2009-08-11 10:12:21

2011-09-21 10:56:31

C#結構

2009-08-20 18:30:33

C# ReaderWr

2009-08-21 15:54:40

服務端與客戶端

2009-08-27 10:54:09

C# const和st

2009-08-26 14:05:19

C#值類型和引用類型

2009-09-04 17:34:11

C#CC++

2009-08-26 13:15:38

C#選擇控制

2009-08-20 10:24:52

C#開發WinForm

2009-08-14 17:58:05

C#接口方法

2009-08-25 16:16:43

C# oledbcon

2009-08-26 15:46:01

C#匿名類型

2009-09-02 15:41:21

C# HTTPWebR

2009-08-06 15:30:23

C#類型系統

2009-08-19 17:12:18

C# Connecti

2009-08-07 11:26:53

C#數組結構
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美福利 | 91视频在线| 国产成人综合av | 国外成人免费视频 | 国产亚洲一区精品 | 成年女人免费v片 | 亚洲欧美日韩在线 | 91在线视频一区 | 亚洲一区播放 | 欧美激情va永久在线播放 | 一本一道久久a久久精品综合 | 国产激情一区二区三区 | 成人黄色电影免费 | 最新国产在线 | 亚洲成人免费网址 | xxxcom在线观看 | 91一区二区三区 | 国产精品视频导航 | 国产一区二区免费 | 成人在线视频一区 | 成人性视频在线播放 | 久久激情视频 | www.97国产 | 久久精品国产亚洲 | 久久九精品 | 在线观看亚洲专区 | 成人在线观看免费 | 国产午夜精品一区二区 | 国产成人免费视频网站高清观看视频 | 天天爱爱网 | 成人国产精品久久 | 亚洲在线日韩 | 黄视频网站免费观看 | 日日夜夜狠狠操 | 欧美一级做性受免费大片免费 | 伊人久麻豆社区 | 亚洲成年在线 | 久久国产视频播放 | 超级乱淫av片免费播放 | 国产亚洲精品美女久久久久久久久久 | 日韩淫片免费看 |