コード例 #1
0
        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);
            }
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
 public static extern bool ControlService(IntPtr hService, SRVControl dwControl, ref SRV_Win32_Status lpServiceStatus);
コード例 #5
0
 public static extern bool QueryServiceStatus(IntPtr hService, ref SRV_Win32_Status lpServiceStatus);