浅谈C#安装服务和卸载服务
来源:互联网 发布:家庭资产负债表软件 编辑:程序博客网 时间:2024/06/04 18:46
这是一个C#安装服务和卸载服务的类,有兴趣可以看一下.
using System; using System.Runtime.InteropServices; namespace EAE.MyServiceInstaller { class ServiceInstaller { #region Private Variables private string _servicePath; private string _serviceName; private string _serviceDisplayName; #endregion Private Variables #region DLLImport [DllImport("advapi32.dll")] public static extern IntPtr OpenSCManager(string lpMachineName,string lpSCDB, int scParameter); [DllImport("Advapi32.dll")] public static extern IntPtr CreateService(IntPtr SC_HANDLE,string lpSvcName,string lpDisplayName, int dwDesiredAccess,int dwServiceType,int dwStartType,int dwErrorControl,string lpPathName, string lpLoadOrderGroup,int lpdwTagId,string lpDependencies,string lpServiceStartName,string lpPassword); [DllImport("advapi32.dll")] public static extern void CloseServiceHandle(IntPtr SCHANDLE); [DllImport("advapi32.dll")] public static extern int StartService(IntPtr SVHANDLE,int dwNumServiceArgs,string lpServiceArgVectors); [DllImport("advapi32.dll",SetLastError=true)] public static extern IntPtr OpenService(IntPtr SCHANDLE,string lpSvcName,int dwNumServiceArgs); [DllImport("advapi32.dll")] public static extern int DeleteService(IntPtr SVHANDLE); [DllImport("kernel32.dll")] public static extern int GetLastError(); #endregion DLLImport // /// // /// C#安装服务应用程序入口. // /// // // [STAThread] // static void Main(string[] args) // { // // string svcPath; // string svcName; // string svcDispName; // //C#安装服务程序的路径 // svcPath = @"d:\service\EAEWS.exe"; // svcDispName="myEAEWS"; // svcName= "myEAEWS"; // ServiceInstaller c = new ServiceInstaller(); // c.InstallService(svcPath, svcName, svcDispName); // Console.Read(); // // } /// /// 安装和运行 /// /// C#安装程序路径. /// 服务名 /// 服务显示名称. /// 服务安装是否成功. public bool InstallService(string svcPath, string svcName, string svcDispName) { #region Constants declaration. int SC_MANAGER_CREATE_SERVICE = 0x0002; int SERVICE_WIN32_OWN_PROCESS = 0x00000010; //int SERVICE_DEMAND_START = 0x00000003; int SERVICE_ERROR_NORMAL = 0x00000001; int STANDARD_RIGHTS_REQUIRED = 0xF0000; int SERVICE_QUERY_CONFIG = 0x0001; int SERVICE_CHANGE_CONFIG = 0x0002; int SERVICE_QUERY_STATUS = 0x0004; int SERVICE_ENUMERATE_DEPENDENTS = 0x0008; int SERVICE_START =0x0010; int SERVICE_STOP =0x0020; int SERVICE_PAUSE_CONTINUE =0x0040; int SERVICE_INTERROGATE =0x0080; int SERVICE_USER_DEFINED_CONTROL =0x0100; int SERVICE_ALL_ACCESS = (STANDARD_RIGHTS_REQUIRED | SERVICE_QUERY_CONFIG | SERVICE_CHANGE_CONFIG | SERVICE_QUERY_STATUS | SERVICE_ENUMERATE_DEPENDENTS | SERVICE_START | SERVICE_STOP | SERVICE_PAUSE_CONTINUE | SERVICE_INTERROGATE | SERVICE_USER_DEFINED_CONTROL); int SERVICE_AUTO_START = 0x00000002; #endregion Constants declaration. try { IntPtr sc_handle = OpenSCManager(null,null,SC_MANAGER_CREATE_SERVICE); if (sc_handle.ToInt32() != 0) { 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); if(sv_handle.ToInt32() ==0) { CloseServiceHandle(sc_handle); return false; } else { //试尝启动服务 int i = StartService(sv_handle,0,null); if(i==0) { return false; } CloseServiceHandle(sc_handle); return true; } } else return false; } catch(Exception e) { throw e; } } /// /// 反安装服务. /// /// 服务名. public bool UnInstallService(string svcName) { int GENERIC_WRITE = 0x40000000; IntPtr sc_hndl = OpenSCManager(null,null,GENERIC_WRITE); if(sc_hndl.ToInt32() !=0) { int DELETE = 0x10000; IntPtr svc_hndl = OpenService(sc_hndl,svcName,DELETE); if(svc_hndl.ToInt32() !=0) { int i = DeleteService(svc_hndl); if (i != 0) { CloseServiceHandle(sc_hndl); return true; } else { CloseServiceHandle(sc_hndl); return false; } } else return false; } else return false; } } }
- 浅谈C#安装服务和卸载服务
- C#安装卸载服务
- C#获取WIN服务的路径和安装卸载服务
- C#安装服务和卸载Windows服务 操作类
- 安装和卸载服务
- C#启用服务 关闭服务 安装服务 卸载服务
- C#启用服务 关闭服务 安装服务 卸载服务 收藏
- C#启用服务 关闭服务 安装服务 卸载服务
- C#启用服务 关闭服务 安装服务 卸载服务 .
- C# Windows服务的安装和卸载批处理
- C#中如何安装和卸载【Windows服务】?
- C# 创建、安装和卸载Windows服务程序
- 安装和卸载Tomcat服务
- 安装和卸载windows服务
- 服务的安装和卸载
- 安装和卸载windows服务
- 安装和卸载windows服务
- windows 服务安装和卸载
- WPF 系统托盘制作方案与窗体自动隐藏
- android 如何判断去电或来电已经接通
- Java多线程中Sleep与Wait的区别
- Maven Android Eclipse集成环境汇总-Windows
- HTC desire v 使用技巧
- 浅谈C#安装服务和卸载服务
- C++入口函数main返回值
- android 如何获取IMSI号
- android手机涉及到的存储空间概念扫盲
- erlang 列表处理函数 (lists) 补充
- 旋转手机摄像头想法 -Camerax
- 2012-11-06 11:27 java五种监测内存软件
- UI设计准则在360云盘的运用
- android 联系人从SIM卡导入的联系人号码是显示“其它”号码不是“手机或者电话”号码