/// <summary> /// Class for work with service /// </summary> /// <param name="serviceName">Selected service</param> /// <param name="serviceAccess">Access to service</param> public ServiceEngine(string serviceName, ServiceAccess serviceAccess) { _service = new ServiceController(serviceName, Environment.MachineName); _schSCManager = OpenSCManager(null, null, SCM_ACCESS.SC_MANAGER_ALL_ACCESS); if (_schSCManager.IsInvalid) { throw new Exception(string.Format("OpenSCManager failed {0}", Marshal.GetLastWin32Error())); } SERVICE_ACCESS sA = SERVICE_ACCESS.SERVICE_ALL_ACCESS; if (serviceAccess == ServiceAccess.Read) { sA = SERVICE_ACCESS.SERVICE_QUERY_CONFIG; } _schService = OpenService(_schSCManager, serviceName, sA); if (_schService.IsInvalid) { throw new Exception(string.Format("OpenService failed {0}", Marshal.GetLastWin32Error())); } IsServiceMarkedForDelete = false; if (!ChangeServiceConfig(_schService, SERVICE_NO_CHANGE, SERVICE_NO_CHANGE, SERVICE_NO_CHANGE, null, null, IntPtr.Zero, null, null, null, null)) { if (Marshal.GetLastWin32Error() == 1072) { IsServiceMarkedForDelete = true; } } }
public IService OpenService(string serviceName, SERVICE_ACCESS desiredAccess) { var serviceHandle = NativeMethods.OpenService(handle, serviceName, (uint)desiredAccess); if (serviceHandle == IntPtr.Zero) { throw new Win32Exception(); } return(new Service(serviceHandle)); }
public static extern ServiceControlHandle CreateService(ServiceControlHandle serviceControlManagerHandler, string lpSvcName, string lpDisplayName, SERVICE_ACCESS dwDesiredAccess, SERVICE_TYPES dwServiceType, SERVICE_START_TYPES dwStartType, SERVICE_ERROR_CONTROL dwErrorControl, string lpPathName, string lpLoadOrderGroup, IntPtr lpdwTagId, string lpDependencies, string lpServiceStartName, string lpPassword);
private static extern SafeWaitHandle CreateService( SafeWaitHandle hSCManager, string lpServiceName, string lpDisplayName, SERVICE_ACCESS dwDesiredAccess, Int32 dwServiceType, Int32 dwStartType, Int32 dwErrorControl, string lpBinaryPathName, string lpLoadOrderGroup, Int32 lpdwTagId, string lpDependencies, string lpServiceStartName, string lpPassword);
internal static extern IntPtr CreateService( IntPtr hSCManager, string lpServiceName, string lpDisplayName, SERVICE_ACCESS dwDesiredAccess, SERVICE_TYPE dwServiceType, SERVICE_START_TYPE dwStartType, SERVICE_ERROR dwErrorControl, string lpBinaryPathName, string lpLoadOrderGroup, IntPtr lpdwTagId, string lpDependencies, string lpServiceStartName, string lpPassword);
public IService CreateService( string serviceName, string displayName, SERVICE_ACCESS desiredAccess, SERVICE_TYPE serviceType, SERVICE_START_TYPE startType, SERVICE_ERROR_CONTROL errorControl, string binaryPathName, string loadOrderGroup, IntPtr tagId, ICollection <string> dependencies, string serviceStartName, string password) { string deps = (dependencies?.Any() ?? false) ? string.Join("\0", dependencies) : null; var serviceHandle = NativeMethods.CreateService( handle, serviceName, displayName, (uint)desiredAccess, (uint)serviceType, (uint)startType, (uint)errorControl, binaryPathName, loadOrderGroup, tagId, deps, serviceStartName, password ); if (serviceHandle == IntPtr.Zero) { throw new Win32Exception(); } return(new Service(serviceHandle)); }
public static extern ServiceControlHandle OpenService(ServiceControlHandle serviceControlManagerHandle, string lpSvcName, SERVICE_ACCESS dwDesiredAccess);
internal static extern SafeServiceHandle OpenService(SafeServiceHandle manager, string serviceName, SERVICE_ACCESS desiredAccess);
internal static extern IntPtr OpenService(IntPtr hSCManager, string lpServiceName, SERVICE_ACCESS dwDesiredAccess);
public static extern IntPtr OpenService(IntPtr databaseHandle, string serviceName, SERVICE_ACCESS access);
public static extern IntPtr CreateService(IntPtr databaseHandle, string serviceName, string displayName, SERVICE_ACCESS access, int serviceType, int startType, int errorControl, string binaryPath, string loadOrderGroup, IntPtr pTagId, string dependencies, string servicesStartName, string password);
static extern IntPtr OpenService(IntPtr hSCManager, string lpServiceName, SERVICE_ACCESS dwDesiredAccess);
public static extern SafeServiceHandle OpenService( SafeServiceHandle hSCManager, string lpServiceName, SERVICE_ACCESS dwDesiredAccess);
private static extern SafeWaitHandle OpenService(SafeWaitHandle hSCManager, string lpServiceName, SERVICE_ACCESS dwDesiredAccess);
public static extern IntPtr OpenService(SafeHandle hSCManager, [MarshalAs(UnmanagedType.LPWStr)] string lpServiceName, [MarshalAs(UnmanagedType.U4)] SERVICE_ACCESS dwDesiredAccess);
public static extern SafeServiceHandle CreateService(SafeServiceHandle hSCManager, string lpServiceName, string lpDisplayName, SERVICE_ACCESS dwDesiredAccess, SERVICE_TYPE dwServiceType, ServiceStartType dwStartType, SERVICE_ERROR dwErrorControl, string lpBinaryPathName, string lpLoadOrderGroup, IntPtr lpdwTagId, char[] lpDependencies, string lpServiceStartName, string lpPassword);