public SRVStatus QueryStatus(string srvName) { IntPtr hScm = OpenSCManager(null, null, SRVSCManage.QUERY_LOCK_STATUS); if (hScm.ToInt32() == 0) { return(SRVStatus.STATUS_ERROR); } IntPtr hSrv = OpenService(hScm, srvName, (int)SRVAccess.QUERY_STATUS); if (hSrv.ToInt32() == 0) { CloseServiceHandle(hScm); return(SRVStatus.STATUS_ERROR); } SRV_Win32_Status status = new SRV_Win32_Status(); bool isOK = QueryServiceStatus(hSrv, ref status); CloseServiceHandle(hSrv); CloseServiceHandle(hScm); if (isOK) { return(status.CurrentStatus); } else { return(SRVStatus.RUNNING); } }
public bool Delete(string srvName) { IntPtr hScm = OpenSCManager(null, null, SRVSCManage.ALL_ACCESS); if (hScm.ToInt32() == 0) { return(false); } IntPtr hSrv = OpenService(hScm, srvName, (int)SRVAccess.DELETE); if (hSrv.ToInt32() == 0) { CloseServiceHandle(hScm); return(false); } SRV_Win32_Status stat = new SRV_Win32_Status(); bool ret = DeleteService(hSrv); CloseServiceHandle(hSrv); CloseServiceHandle(hScm); return(ret); }
public bool Stop(string srvName) { IntPtr hScm = OpenSCManager(null, null, SRVSCManage.ALL_ACCESS); if (hScm.ToInt32() == 0) { return(false); } IntPtr hSrv = OpenService(hScm, srvName, (int)SRVAccess.ALL_ACCESS); if (hSrv.ToInt32() == 0) { CloseServiceHandle(hScm); return(false); } SRV_Win32_Status stat = new SRV_Win32_Status(); bool ret = ControlService(hSrv, SRVControl.STOP, ref stat); CloseServiceHandle(hSrv); CloseServiceHandle(hScm); return(ret); }
public static extern bool ControlService(IntPtr hService, SRVControl dwControl, ref SRV_Win32_Status lpServiceStatus);
public static extern bool QueryServiceStatus(IntPtr hService, ref SRV_Win32_Status lpServiceStatus);