public void Start(Service service, string[] args) { var servicePtr = ADVANCED_API.OpenService(_managerPtr, service.Name, SERVICE_ACCESS.SERVICE_START); if (servicePtr == IntPtr.Zero) { var error = Marshal.GetLastWin32Error(); throw new Win32Exception(error); } var started = ADVANCED_API.StartService(servicePtr, args.Length, args); var closed = ADVANCED_API.CloseServiceHandle(servicePtr); if (!started || !closed) { var error = Marshal.GetLastWin32Error(); throw new Win32Exception(error); } }