рд╡рд┐рдВрдбреЛрдЬ рд╕реЗрд╡рд╛ред рд╕рд┐рд╕реНрдЯрдо рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рдЦреЛрдЬ рдХрд░реЗрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ WinForm C # рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВ

рдЗрд╕ рдЖрд▓реЗрдЦ рдореЗрдВ, рд╣рдо рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рд╕реНрдХреНрд░реИрдЪ рд╕реЗ рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдП рдЬреЛ рд╡рд┐рдВрдбреЛрдЬрд╝ рд╕реЗрд╡рд╛рдУрдВ рдФрд░ WinForm (C #) рдореЗрдВ рд╕рд┐рд╕реНрдЯрдо рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдЧрд╛ред

рдЗрд╕ рд▓реЗрдЦ рдХреА рд░реВрдкрд░реЗрдЦрд╛:

  • рд╕реЗрд╡рд╛ рдирд┐рд░реНрдорд╛рдг
  • рдШрдЯрдирд╛ рджрд░реНрд╢рдХ
  • рд╕реЗрд╡рд╛ рдХреЛрдб
  • рд╕реЗрд╡рд╛ рдХреА рдЬрд╛рдБрдЪ (рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╕реЗрд╡рд╛ рд╢реБрд░реВ рдХрд░рдирд╛)
  • WinForm рдорд╛рдирдЪрд┐рддреНрд░рдг

рд╕реЗрд╡рд╛ рдирд┐рд░реНрдорд╛рдг


рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдЦреЛрд▓реЗрдВред рдЕрдЧрд▓реА рдлрд╝рд╛рдЗрд▓ тЖТ рдирдпрд╛ тЖТ рдкреНрд░реЛрдЬреЗрдХреНрдЯ тЖТ (рд╡рд┐рдВрдбреЛрдЬрд╝ рдбреЗрд╕реНрдХрдЯреЙрдк) тЖТ рд╡рд┐рдВрдбреЛрдЬ рд╕рд░реНрд╡рд┐рд╕ (.Net рдлреНрд░реЗрдорд╡рд░реНрдХ) тЖТ рдУрдХреЗред

рдЕрдЧрд▓рд╛ рдЖрдкрдХреЛ рдПрдХ рдЗрдВрд╕реНрдЯреЙрд▓рд░ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЦреБрд▓рдиреЗ рд╡рд╛рд▓реА рд╡рд┐рдВрдбреЛ рдореЗрдВ, рдЖрд░рдПрдордмреА рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ "рдЗрдВрд╕реНрдЯреЙрд▓рд░ рдЬреЛрдбрд╝реЗрдВ" рдЪреБрдиреЗрдВред рдЖрдкрдХреЗ рдкрд╛рд╕ "ProjectInstaller.cs [Design]" рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдЖрдкрдХреЛ "F7" рдХреЛрдб рдпрд╛ RMB "рд╡реНрдпреВ рдХреЛрдб" рдкрд░ рдЬрд╛рдирд╛ рд╣реЛрдЧрд╛ред рдЖрдкрдХреЛ рд▓рд╛рдЗрди "InitializeComponent ()" рдЦреЛрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЙрд╕ рдкрд░ рдХрд░реНрд╕рд░ рд░рдЦреЗрдВ рдФрд░ "F12" рджрдмрд╛рдПрдВ, рдлрд┐рд░ рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓рд╛рдЗрдиреЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

this.serviceProcessInstaller1.Account = System.ServiceProcess.ServiceAccount.LocalSystem; //       this.serviceInstaller1.Description = "Show me system error."; //       this.serviceInstaller1.DisplayName = "GetSystemError"; //        

рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдЗрди рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдХреЗрд╡рд▓ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЕрдиреБрдХреНрд░рдо рдФрд░ рд╕реНрдерд╛рди рдкрд░ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред рдЕрдиреНрдпрдерд╛, рд╕реЗрд╡рд╛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╕рдордп рдПрдХ рддреНрд░реБрдЯрд┐ рд╣реЛрдЧреАред



рдШрдЯрдирд╛ рджрд░реНрд╢рдХ


рдпрд╣ рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд╕рд╣реА рд╕рдВрдЪрд╛рд▓рди рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред

рдИрд╡реЗрдВрдЯ рд╡реНрдпреВрдЕрд░ - рдИрд╡реЗрдВрдЯ рд▓реЙрдЧ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЬреЛ рд╡рд┐рдВрдбреЛрдЬрд╝ рдХреЗ рд╕рд╛рде рд╣рд░ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рд╣реИред рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рдЪрд▓рдиреЗ рд╡рд╛рд▓рд╛ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд░реБрдХрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЗрд╡реЗрдВрдЯ рд▓реЙрдЧ рдореЗрдВ рдПрдХ рд╕реВрдЪрдирд╛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рд╕рд┐рд╕реНрдЯрдо рдХреА рдХреЛрдИ рднреА рдкрд╣реБрдВрдЪ, рд╕реБрд░рдХреНрд╖рд╛ рдкрд░рд┐рд╡рд░реНрддрди, рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреА рдЯреНрдпреВрдирд┐рдВрдЧ, рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рд╡рд┐рдлрд▓рддрд╛ рдФрд░ рдбреНрд░рд╛рдЗрд╡рд░ рдХреА рд╡рд┐рдлрд▓рддрд╛ - рдпрд╣ рд╕рдм рдШрдЯрдирд╛ рд▓реЙрдЧ рдореЗрдВ рдорд┐рд▓рддрд╛ рд╣реИред рдЗрд╡реЗрдВрдЯ рд╡реНрдпреВрдЕрд░ рдЯреЗрдХреНрд╕реНрдЯ рд▓реЙрдЧ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕реНрдХреИрди рдХрд░рддрд╛ рд╣реИ, рдЙрдиреНрд╣реЗрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рд░рдЦрддрд╛ рд╣реИред

рдЗрд╕реЗ рдХреИрд╕реЗ рдЦреЛрд▓реЗрдВ? - "рдЗрд╡реЗрдВрдЯ рд╡реНрдпреВрдЕрд░" (рдЦреЛрдЬ рдореЗрдВ) тЖТ "рдЗрд╡реЗрдВрдЯ рд▓реЙрдЧ рджреЗрдЦреЗрдВ" рд╢реБрд░реВ рдХрд░реЗрдВред

рдЕрдЧрд▓рд╛, "рдХрд╕реНрдЯрдо рджреГрд╢реНрдп" тЖТ "рдкреНрд░рд╢рд╛рд╕рдирд┐рдХ рдШрдЯрдирд╛рдПрдБред" рдпрд╣рд╛рдВ рд╣рдо рд╕рднреА рддреНрд░реБрдЯрд┐рдпреЛрдВ, рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдФрд░ рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред

3 рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓реЙрдЧ рд╣реИрдВ: рдПрдкреНрд▓рд┐рдХреЗрд╢рди (рдПрдкреНрд▓рд┐рдХреЗрд╢рди), рд╕рд┐рд╕реНрдЯрдо (рд╕рд┐рд╕реНрдЯрдо) рдФрд░ рд╕реБрд░рдХреНрд╖рд╛ (рд╕реБрд░рдХреНрд╖рд╛)ред рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдкреНрд░рдгрд╛рд▓реА (рд╕рд┐рд╕реНрдЯрдо) рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рд╕реЗрд╡рд╛ рдХреЛрдб


рд╣рдореЗрдВ рд╕реЗрд╡рд╛ рдХреЗ рдирд╛рдо рдХреЗ рд╕рд╛рде .cs рдлрд╝рд╛рдЗрд▓ рдорд┐рд▓рддреА рд╣реИ, рдореЗрд░реЗ рдкрд╛рд╕ "Service1.cs" рд╣реИ, рдЗрд╕реЗ рдЦреЛрд▓реЗрдВред рдлрд╝рд╛рдЗрд▓ рдореЗрдВ 2 рдУрд╡рд░рд░рд╛рдЗрдб рд╡рд┐рдзрд┐рдпрд╛рдБ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП:

  • OnStart (string [] args) - рдЬрдм рд╕реЗрд╡рд╛ рд╢реБрд░реВ рд╣реЛрдЧреА, рддрдм рдирд┐рд╖реНрдкрд╛рджрд┐рдд
  • OnStop () - рдЬрдм рд╕реЗрд╡рд╛ рдмрдВрдж рд╣реЛ рдЬрд╛рддреА рд╣реИ рддреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдХреБрдЫ рдФрд░ рддрд░реАрдХреЗ рднреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрдм рд╣рдореЗрдВ рдЙрдирдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИ рдЖрдк рдЙрдиреНрд╣реЗрдВ рд╕реНрд╡рдпрдВ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдЬреЛ рдбреЗрдЯрд╛ рд╣рдореЗрдВ рдорд┐рд▓рддрд╛ рд╣реИ рдЙрд╕реЗ рдЕрдкрдбреЗрдЯреЗрдб рдЯреЗрдХреНрд╕реНрдЯ рдлрд╛рдЗрд▓ рдореЗрдВ рд╕реНрдЯреЛрд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛

 using System.IO; 

OnStart рдкрджреНрдзрддрд┐ рдореЗрдВ рдХреЛрдб рдЬреЛрдбрд╝реЗрдВ (string [] args):

 EventLog myLog; //       string filepath = AppDomain.CurrentDomain.BaseDirectory + @"\ServiceLog.txt";; //    List<string> list; //    protected override void OnStart(string[] args) { myLog = new EventLog(); myLog.Log = "System"; //     - (Application),    (System). myLog.Source = "System Error"; for (int index = myLog.Entries.Count - 1; index > 0; index--) //         { var errEntry = myLog.Entries[index]; \\     if (errEntry.EntryType == EventLogEntryType.Error) \\    { //     var appName = errEntry.Source; list = new List<string>(); list.Add("Entry Type: " + Convert.ToString(errEntry.EntryType)); list.Add("Event log: " + (string)myLog.Log); list.Add("Machine Name: " + (string)errEntry.MachineName); list.Add("App Name: " + (string)errEntry.Source); list.Add("Message: " + (string)errEntry.Message); list.Add("Time Written: " + errEntry.TimeWritten.ToString()); list.Add("-*-"); WriteToFile(list); //    } } } public void WriteToFile(List<string> list) //   { using (StreamWriter sw = File.AppendText(filepath)) { for (int i = 0; i < list.Count; i++) sw.WriteLine(list[i]); } } 

рдЕрдЧрд▓рд╛, рдЖрдкрдХреЛ рд╕рдорд╛рдзрд╛рди "рд╕рдорд╛рдзрд╛рди" рдПрдХрддреНрд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ -> "рд╕рдорд╛рдзрд╛рди рдХрд╛ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг"ред рд╕рдлрд▓ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреЗ рдмрд╛рдж, рдЖрдк рдСрдкрд░реЗрд╢рди рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╕реЗрд╡рд╛ рдХреА рдЬрд╛рдБрдЪ (рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╕реЗрд╡рд╛ рд╢реБрд░реВ рдХрд░рдирд╛)


рд╡рд┐рдВрдбреЛрдЬрд╝ рд╕реЗрд╡рд╛ рдХреЛ рдПрдХ рдирд┐рдпрдорд┐рдд рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рд╢реБрд░реВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЖрдк рдХреЗрд╡рд▓ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд▓рд╛рдПрдВред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдорд╛рдВрдб рджрд░реНрдЬ рдХрд░реЗрдВ:

 cd C:\Windows\Microsoft.NET\Framework\v4.0.30319 InstallUtil.exe \  .exe (InstallUtil.exe C:\Users\\source\repos\WindowsService1\WindowsService1 \bin\Debug\WindowsService1.exe)    : InstallUtil.exe -u \  .exe 

рдЕрдЧрд▓рд╛, рд╡рд┐рди + рдЖрд░ рдХреБрдВрдЬреА рджрдмрд╛рдПрдВред "Services.msc" рджрд░реНрдЬ рдХрд░реЗрдВред рд╣рдо рд╕реВрдЪреА рдореЗрдВ рд╣рдорд╛рд░реА рд╕реЗрд╡рд╛ рдкрд╛рддреЗ рд╣реИрдВ, рдЙрд╕ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ, рдФрд░ "рдкреНрд░рд╛рд░рдВрдн" рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред рдПрдХ рд╕рдлрд▓ рд▓реЙрдиреНрдЪ рдХреЗ рдмрд╛рдж, рдПрдХ рдлрд╝рд╛рдЗрд▓ рдХреЛрдб рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкрде рдкрд░ рдЙрддреНрдкрдиреНрди рд╣реЛрдЧреА рдЬрд┐рд╕рдореЗрдВ рд╕рд┐рд╕реНрдЯрдо рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рд╕реВрдЪреА рд╕реНрдерд┐рдд рд╣реЛрдЧреАред
рд╕рддреНрдпрд╛рдкрди рдХреЗ рдмрд╛рдж рд╕реЗрд╡рд╛ рдХреЛ рд╣рдЯрд╛рдирд╛ рди рднреВрд▓реЗрдВред

WinForm рдорд╛рдирдЪрд┐рддреНрд░рдг


рдХрдВрд╕реЛрд▓ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдк рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рд▓реЗрдЦ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрд╣ WinForm рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдорд┐рд▓рд╛, рдЗрд╕рд▓рд┐рдП рдпрд╣рд╛рдВ рдпрд╣ рд╣реИред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдПрдХ рд╕реЗрд╡рд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкреНрд░рдХрд╛рд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХрдВрд╕реЛрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рдмрджрд▓рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, WinForm рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдЫреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рд╣реИред рдЖрдЧреЗ рдЖрдкрдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдлреЙрд░реНрдо рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред "рд╡рд┐рдВрдбреЛрдЬ рд╕рд░реНрд╡рд┐рд╕ 1" тЖТ рдЖрд░рдПрдордмреА тЖТ рдПрдб тЖТ рд╡рд┐рдВрдбреЛрдЬ рдлреЙрд░реНрдо тЖТ рдРрдбред рдФрд░ рдирд┐рдореНрди рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд░реЗрдВред рдЕрдЧрд▓рд╛, "Program.cs" рдлрд╝рд╛рдЗрд▓ рдмрджрд▓реЗрдВред

рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдЬреЛрдбрд╝реЗрдВ:

 using System.Windows.Forms; using System.Security.Principal; using System.ComponentModel; using System.Diagnostics; 

рдФрд░ рдореБрдЦреНрдп рд╡рд┐рдзрд┐ рдмрджрд▓реЗрдВ:

 static void Main(string[] args) { WindowsPrincipal windowsPricipal = new WindowsPrincipal(WindowsIdentity.GetCurrent()); bool hasAdministrativeRight = windowsPricipal.IsInRole(WindowsBuiltInRole.Administrator); if (hasAdministrativeRight == false) //    { ProcessStartInfo processInfo = new ProcessStartInfo(); //   processInfo.Verb = "runas"; //       processInfo.FileName = Application.ExecutablePath; try { Process.Start(processInfo); //   } catch (Win32Exception){} Application.Exit(); } else { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1(args)); //  } } 

рдПрдХ рдирдпрд╛ рд╡рд░реНрдЧ "SystemError" рдЬреЛрдбрд╝реЗрдВред ("WindowsService1" -> RMB -> рдЬреЛрдбрд╝реЗрдВ -> рд╡рд░реНрдЧ -> рдЬреЛрдбрд╝реЗрдВ)ред рдпрд╣рд╛рдВ рд╣рдо рдПрд░рд░ рдбреЗрдЯрд╛ рд╕реНрдЯреЛрд░ рдХрд░реЗрдВрдЧреЗред рдЗрд╕реЗ рдмрджрд▓реЗрдВ:

 public string EntryType{ get; set; } public string EventLog{ get; set; } public string MachineName { get; set; } public string AppName { get; set; } public string Message { get; set; } public string TimeWritten { get; set; } 

"Service1.cs" рдореЗрдВ рдЖрдЧреЗ рд╣рдо "рд░рдирдлрд╝реНрд░реЛрдордлрд╝реЙрд░реНрдо (рд╕реНрдЯреНрд░рд┐рдВрдЧ [] рдЖрд░реНрдЧреНрд╕)" рд╡рд┐рдзрд┐ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдЬреЛ рд╕реЗрд╡рд╛ рд╢реБрд░реВ рдХрд░рддреА рд╣реИред

 public void RunFromForm(string[] args) { OnStart(args); OnStop(); } 

рдПрдХ рдирдпрд╛ рд╡рд░реНрдЧ "GetListErrors" рдЬреЛрдбрд╝реЗрдВред ("WindowsService1" -> RMB -> рдЬреЛрдбрд╝реЗрдВ -> рд╡рд░реНрдЧ -> рдЬреЛрдбрд╝реЗрдВ)ред рдпрд╣рд╛рдВ рд╣рдо рдлрд╛рдЗрд▓ рд╕реЗ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗред рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдЬреЛрдбрд╝реЗрдВ:

 using System.IO; 

рдЗрд╕реЗ рдмрджрд▓реЗрдВ:

 string filepath = AppDomain.CurrentDomain.BaseDirectory + @"\ServiceLog.txt"; SystemError systemError; public List<SystemError> listSysErrs; public void ReadFile() //          { systemError = new SystemError(); listSysErrs = new List<SystemError>(); using (StreamReader sr = new StreamReader(filepath)) { string line; while ((line = sr.ReadLine()) != null) { if (line.Contains("-*-")) { listSysErrs.Add(systemError); systemError = new SystemError(); //       } if (line.Contains("Entry Type")) { systemError.EntryType = line.Substring(12); } else if (line.Contains("Event log")) { systemError.EventLog = line.Substring(11); } else if (line.Contains("Machine Name")) { systemError.MachineName = line.Substring(14); } else if (line.Contains("App Name")) { systemError.AppName = line.Substring(10); } else if (line.Contains("Message")) { systemError.Message = line.Substring(9); } else if (line.Contains("Time Written")) { systemError.TimeWritten = line.Substring(14); } } } } 

рдЕрдЧрд▓рд╛, "Form1.cs" рдлрд╝реЙрд░реНрдо рдХрд╛ рдХреЛрдб рдмрджрд▓реЗрдВред рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдЬреЛрдбрд╝реЗрдВ:

 using System.ServiceProcess; using System.Diagnostics; 

рдЗрд╕реЗ рдмрджрд▓реЗрдВ:

 Service1 service = new Service1(); List<SystemError> listSysErrs; string[] args; public Form1(string[] args) { InitializeComponent(); this.args = args; if (Environment.UserInteractive)//          { service.RunFromForm(args); //  GetListErrors getListErrors = new GetListErrors(); getListErrors.ReadFile(); //      listSysErrs = getListErrors.listSysErrs; FillDataGridView(); //    } else { ServiceBase[] ServicesToRun; ServicesToRun = new ServiceBase[] { service }; ServiceBase.Run(ServicesToRun); } } public void FillDataGridView() //     { foreach (SystemError item in listSysErrs) { dataGridView1.Rows.Add(item.AppName, item.Message); } } private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e) //                { SystemError sys = listSysErrs[dataGridView1.CurrentRow.Index]; label1.Text = "Entry Type: " + sys.EntryType + "\nEvent log: " + sys.EventLog + "\nMachine Name: " + sys.MachineName + "\nApp Name: " + sys.AppName + "\n\nMessage: " + FormatMessage(sys.Message) + "\n\nTime Written: " + sys.TimeWritten; } private string FormatMessage(string msg) //       ,                 { string retMsg = ""; int count = 75; if (msg.Length > count - 9) { retMsg += msg.Substring(0, count - 9) + "\n"; msg = msg.Substring(count - 9); } while (msg.Length > count) { retMsg += msg.Substring(0, count) + "\n"; msg = msg.Substring(count); } retMsg += msg + "\n"; return retMsg; } private void button1_Click(object sender, EventArgs e) //          { if (Environment.UserInteractive) { while (dataGridView1.Rows.Count != 0) { dataGridView1.Rows.Remove(dataGridView1.Rows[dataGridView1.Rows.Count - 1]); } service.RunFromForm(args); GetListErrors getListErrors = new GetListErrors(); getListErrors.ReedFile(); listSysErrs = getListErrors.listSysErrs; FillDataGridView(); } else { ServiceBase[] ServicesToRun; ServicesToRun = new ServiceBase[] { service }; ServiceBase.Run(ServicesToRun); } } private void button2_Click(object sender, EventArgs e) { Process.Start(AppDomain.CurrentDomain.BaseDirectory); //  } 

рдЕрдм рдЖрдк рдирд┐рдпрдорд┐рдд рдЖрд╡реЗрджрди рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрд╡рд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдкрд░рд┐рдгрд╛рдо рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:

Source: https://habr.com/ru/post/hi452688/


All Articles