浅谈C#安装服务和卸载服务
2012-11-06 11:26
344 查看
这是一个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#获取WIN服务的路径和安装卸载服务
- C# 创建、安装和卸载Windows服务程序
- C#启用服务 关闭服务 安装服务 卸载服务
- 安装 启动 停止 卸载 Windows服务 c#
- C#制作Windows service服务系列一:制作一个可安装、可启动、可停止、可卸载的Windows
- C#Windows Service服务程序的安装/卸载、启动/停止 桌面客户端管理程序设计
- c# 服务程序安装卸载启动停止
- C# windows服务:通过cmd命令安装、卸载、启动和停止Windows Service(InstallUtil.exe)
- C# 利用 Windows服务模板 创建、安装与卸载Windows服务
- C#安装服务和卸载Windows服务 操作类
- C#制作Windows service服务系列一:制作一个可安装、可启动、可停止、可卸载的Windows service
- C#制作Windows service服务系列一:制作一个可安装、可启动、可停止、可卸载的Windows service
- 用C#代码来安装、卸载、启动、关闭服务
- C# 利用 Windows服务模板 创建、安装与卸载Windows服务
- C#启用服务 关闭服务 安装服务 卸载服务 .
- C#启用服务 关闭服务 安装服务 卸载服务 .
- C#对Windows服务操作(注册安装服务,卸载服务,启动停止服务,判断服务存在)
- 用C#代码来安装、卸载、启动、关闭服务
- C#windows service C#windows 服务安装卸载SC
- C#启用服务 关闭服务 安装服务 卸载服务 收藏