c# windows service
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Diagnostics; using System.ServiceProcess; using System.Text; namespace WindowsServiceTest { public partial class ServiceTest : ServiceBase { private DataSet _Ds = new DataSet(); //设置xml文件保存路径 private string _FilePath = @"D:\记录开关机时间.xml" ; public ServiceTest() { InitializeComponent(); } protected override void OnStart( string [] args) { //每隔一分钟记录一次更新一次关机时间 System.Timers.Timer timer = new System.Timers.Timer(60000); timer.Elapsed += new System.Timers.ElapsedEventHandler(Timer_Click); timer.AutoReset = true ; timer.Enabled = true ; //判断文件是否存在 if (!System.IO.File.Exists(_FilePath)) { CreateDataTable(); } else { _Ds.ReadXml(_FilePath, XmlReadMode.ReadSchema); } this .Add( "开机时间" , DateTime.Now); this .Add( "关机时间" , DateTime.Now); this .SaveToXml(); } protected override void OnStop() { this .Update( "关机时间" , DateTime.Now); this .SaveToXml(); } private void Timer_Click(Object sender,System.Timers.ElapsedEventArgs e) { this .Update( "关机时间" ,DateTime.Now); this .SaveToXml(); } private void CreateDataTable() { System.Data.DataTable Dt = new DataTable( "OPENCLOSE" ); Dt.Columns.Add( "TimeType" , typeof ( string )); Dt.Columns.Add( "OperTime" , typeof (DateTime)); _Ds.Tables.Add(Dt); } //添加开关机时间记录 private bool Add( string TimeType, DateTime OperTime) { if (_Ds.Tables.Count == 0) return false ; DataTable Dt = _Ds.Tables[ "OPENCLOSE" ]; if (Dt == null ) return false ; DataRow dr = Dt.NewRow(); dr[ "TimeType" ] = TimeType; dr[ "OperTime" ] = OperTime; Dt.Rows.Add(dr); return true ; } //更新关机时间 private bool Update( string OperTime, DateTime UpdateTime) { if (_Ds.Tables.Count == 0) return false ; DataTable Dt = _Ds.Tables[ "OPENCLOSE" ]; if (Dt == null ) return false ; DataRow Dr = Dt.Rows[Dt.Rows.Count - 1]; Dr[ "TimeType" ] = OperTime; Dr[ "OperTime" ] = UpdateTime; return true ; } //保存到xml文件 private void SaveToXml() { if (_Ds == null ) return ; _Ds.WriteXml(_FilePath, XmlWriteMode.WriteSchema); } } } |
服务安装脚本
%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe WindowsServiceTest.exe Net Start ServiceTest sc config ServiceTest start= auto pause |
服务卸载脚本
%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe /u WindowsServiceTest.exe pause |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步