private void GetServiceStatus() { if (service != null) { service.Refresh(); } var ss = ServiceControl.GetServiceStatus(service); if (ss != serviceStatus) { serviceStatus = ss; DDnsSharpTray.SetStatus(serviceStatus); string serviceStr; switch (serviceStatus) { case ServiceStatus.Running: serviceStr = "服务正在运行."; break; case ServiceStatus.Stopped: serviceStr = "服务已停止."; break; case ServiceStatus.NotExist: serviceStr = "服务尚未安装."; break; default: serviceStr = "服务状态未知."; break; } DDnsSharpTray.Current.Text = "DDnsSharp: " + serviceStr + "\r\n双击打开或隐藏界面."; } }
private void GetServiceStatus() { if (service != null) { service.Refresh(); } ServiceStatus = ServiceControl.GetServiceStatus(service); }
private GCInterfaceCollection GetInterfaceList(DObjectCollection dlist, bool withStatus) { GCInterfaceCollection ilist = new GCInterfaceCollection(); foreach (InterfaceRec r in dlist) { GCInterface i = new GCInterface(r); ilist.Add(i); if (withStatus) { i.Status = ServiceControl.GetServiceStatus(i.InterfaceName); } } return(ilist); }
private void InstallService() { var dialogResult = MessageBox.Show("尚未安装DDNS服务,该服务将会在开机的时候自动运行,并且每30秒自动更新您的最新IP您的指定记录.在安装之前请确保您正在使用管理员权限运行本程序.是否继续?", "", MessageBoxButton.YesNo); if (dialogResult == MessageBoxResult.Yes) { var path = Path.Combine(Directory.GetCurrentDirectory(), "installService.bat"); if (File.Exists(path)) { ShellExecute(IntPtr.Zero, "Open", path, String.Empty, Directory.GetCurrentDirectory(), 0); var task = new Task(() => { System.Threading.Thread.Sleep(5000); try { if (service != null) { service.Dispose(); } service = ServiceControl.GetService(); ServiceStatus = ServiceControl.GetServiceStatus(service); MessageBox.Show("如果左下角的服务状态在1分钟之后还是处于非绿灯状态,请确保您正在使用管理员权限运行本程序,并且程序目录内的文件完整,最后查看程序目录下的DDNSPod.Service.InstallLog和sevice.log日志文件,并向社区求助."); if (service != null) { try { service.Start(); } catch (Exception e) { MessageBox.Show(e.Message); } } } catch (Win32Exception ex) { logger.ErrorException(ex.Message, ex); } }); task.Start(); } else { MessageBox.Show("服务安装脚本丢失,请确保您的DDNSPod的程序目录完整!"); } } }
private void UninstallService() { var dialogResult = MessageBox.Show("您确定这么做吗?", "", MessageBoxButton.YesNo); if (dialogResult == MessageBoxResult.Yes) { var path = Path.Combine(Directory.GetCurrentDirectory(), "uninstallService.bat"); if (File.Exists(path)) { if (service != null) { try { if (service.CanStop) { service.Stop(); } } catch (Exception e) { MessageBox.Show(e.Message); } ShellExecute(IntPtr.Zero, "Open", path, String.Empty, Directory.GetCurrentDirectory(), 0); var task = new Task(() => { System.Threading.Thread.Sleep(5000); if (service != null) { service.Dispose(); service = ServiceControl.GetService(); } ServiceStatus = ServiceControl.GetServiceStatus(service); MessageBox.Show("如果左下角的服务状态在1分钟之后还是处于非红色叉叉状态,请确保您正在使用管理员权限运行本程序,并且程序目录内的文件完整,最后查看程序目录下的DDNSPod.Service.InstallLog和sevice.log日志文件,并向社区求助."); }); task.Start(); } } else { MessageBox.Show("服务安装脚本丢失,请确保您的DDNSPod的程序目录完整!"); } } }
public void StopInterface() { base.SetStatus("Stopping interface."); GCInterface gcInterface = _interfaceView.GetSelectedInterface(); if (gcInterface == null) { return; } if (_interfaceManager.StopInterface(gcInterface)) { Program.Log.Write("{Interface} stop interface (" + gcInterface.ToString() + ") succeed"); _interfaceView.RefreshView(); _interfaceView.SelectInterface(gcInterface); } else { Program.Log.Write(LogType.Warning, "{Interface} stop interface (" + gcInterface.ToString() + ") failed"); Program.Log.Write(LogType.Error, GCError.LastErrorInfor); Program.Log.Write(GCError.LastError); //Stop some NT service may meets error (System.ComponentModel.Win32Exception: The service cannot accept control messages at this time), //especaily after these NT services are started together at the same time by bat files. 2007/07/17 AdapterStatus status = ServiceControl.GetServiceStatus(gcInterface.InterfaceName); if (status != AdapterStatus.Stopped) { MessageBox.Show(frmMain, "Stop interface failed.", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning); } else { _interfaceView.RefreshView(); _interfaceView.SelectInterface(gcInterface); } } base.ClearStatus(); }