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); } } }
服務安裝腳本ide
%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe WindowsServiceTest.exe Net Start ServiceTest sc config ServiceTest start= auto pause
服務卸載腳本this
%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe /u WindowsServiceTest.exe pause