C#安装服务和卸载Windows服务 操作类
2010-01-12 11:42
423 查看
C# 安装 删除Windows 服务类
using System; using System.Collections.Generic; using System.Text; using System.Runtime.InteropServices; namespace InstallService { /// <summary> /// 安装Windows服务业务层 /// </summary> 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 /// <summary> /// 安装服务并运行 /// </summary> /// <param name="svcPath">服务程序路径</param> /// <param name="svcName">服务系统名称</param> /// <param name="svcDispName">服务显示名称</param> /// <returns></returns> 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; } } /// <summary> /// 反安装服务 /// </summary> /// <param name="svcName">服务名称</param> /// <returns></returns> 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#创建、安装、卸载、调试windows服务的简单事例
- C#制作Windows service服务系列一:制作一个可安装、可启动、可停止、可卸载的Windows service
- C# windows服务:通过cmd命令安装、卸载、启动和停止Windows Service(InstallUtil.exe)
- C# windows服务:通过cmd命令安装、卸载、启动和停止Windows Service(InstallUtil.exe)
- C# 利用 Windows服务模板 创建、安装与卸载Windows服务
- C#制作Windows service服务系列一:制作一个可安装、可启动、可停止、可卸载的Windows service
- c#创建、安装、卸载、调试windows服务的简单事例
- C# 创建、安装和卸载Windows服务程序
- C#制作Windows service服务系列一:制作一个可安装、可启动、可停止、可卸载的Windows service
- C# windows服务安装与卸载
- C# 开发Windows Service(一)——第一个windows服务开发和安装卸载
- C# 利用 Windows服务模板 创建、安装与卸载Windows服务
- C# windows服务:通过cmd命令安装、卸载、启动和停止Windows Service(InstallUtil.exe)
- C#代码安装、卸载、监控Windows服务
- C#Windows Service服务程序的安装/卸载、启动/停止 桌面客户端管理程序设计
- C# 创建、安装和卸载Windows服务程序
- 安装 启动 停止 卸载 Windows服务 c#
- 安装 启动 停止 卸载 Windows服务 c#
- 安装 启动 停止 卸载 Windows服务 c#
- C#制作Windows service服务系列一:制作一个可安装、可启动、可停止、可卸载的Windows service(downmoon原创)