рд╣рдо рдЕрдкрдиреА рд╡рд┐рдВрдбреЛрдЬ рд╕рд░реНрд╡рд┐рд╕ рд▓рд┐рдЦрддреЗ рд╣реИрдВ

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

рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╕рдмрд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рд╕рдорд╛рдзрд╛рди рд╡рд┐рдВрдбреЛрдЬ рд╕реЗрд╡рд╛ рд▓рд┐рдЦрдирд╛ рд╣реИред

рд╕реНрдЯреВрдбрд┐рдпреЛ 2010 рдореЗрдВ рдПрдХ рд╕реЗрд╡рд╛ рдмрдирд╛рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ, рдмрд┐рд▓реНрд▓реА рдХреЗ рдиреАрдЪреЗ .Net C #

рдЪрд░рдг 1. рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрдирд╛рдПрдБред



Windows рд╕реЗрд╡рд╛ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдЪрдпрди рдХрд░рдХреЗ рдПрдХ рдирдИ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрдирд╛рдПрдБ



рдЖрд╡рд╢реНрдпрдХрддрд╛рдиреБрд╕рд╛рд░ рд╕реЗрд╡рд╛ рдХреА рд╢реНрд░реЗрдгреА рдХрд╛ рдирд╛рдо рдмрджрд▓реЗрдВред



рдРрд╕рд╛ рдЬрд▓ рдХреЛрдб рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛:

namespace ExampleSrv
{
public partial class MyService : ServiceBase
{
public MyService()
{
InitializeComponent();
}

protected override void OnStart( string [] args)
{
}

protected override void OnStop()
{
}
}
}


* This source code was highlighted with Source Code Highlighter .


рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕реЗрд╡рд╛ рд╣реА рд╣реИред
рдЕрдкрдиреЗ рдХрд╛рд░реНрдп рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП OnStart рдФрд░ OnStop рдШрдЯрдирд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

рдЪрд░рдг 2. рдЗрдВрд╕реНрдЯреЙрд▓рд░ рдХреЛ рдЬреЛрдбрд╝рдирд╛ред


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

рд░рд╛рдЗрдЯ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ ... рдЗрдВрд╕реНрдЯреЙрд▓рд░ рдЬреЛрдбрд╝реЗрдВ



рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ serviceProcessInstaller рдФрд░ serviceInstaller рд╣реИ

img04

рдкрд╣рд▓реЗ рдореЗрдВ рдЖрдк рд▓реЛрдХрд▓ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдЕрдХрд╛рдЙрдВрдЯ рдХреА рд╡реИрд▓реНрдпреВ рдбрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВред
рджреВрд╕рд░реЗ рдореЗрдВ, рд╕реЗрд╡рд╛ рдХрд╛ рдирд╛рдо, рд╡рд┐рд╡рд░рдг рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ рдФрд░ StartType - Automatic рдХреЛ рд░рдЦрдирд╛ рди рднреВрд▓реЗрдВред



рдЗрдВрд╕реНрдЯреЙрд▓рд░ рддреИрдпрд╛рд░ рд╣реИред

рдЪрд░рдг 3. рд▓реЙрдЧрд┐рдВрдЧред


рдЖрдкрдХреЗ рд▓рд┐рдП рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдЖрдкрдХреА рд╕реЗрд╡рд╛ рдХреНрдпрд╛ рдХрд░ рд░рд╣реА рдереА, рдЬрдм рдпрд╣ рд╢реБрд░реВ рд╣реБрдИ, рд╕рдорд╛рдкреНрдд рд╣реБрдИ, рдпрд╛ рдХреБрдЫ рдФрд░, рдЖрдк рд╕рд┐рд╕реНрдЯрдо рд▓реЙрдЧрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдпрд╣ рдмрд╣реБрдд рдЖрд╕рд╛рдиреА рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЯреВрд▓рдмреЙрдХреНрд╕ рд╕реЗ рдЕрдкрдиреА EventLog рд╕реЗрд╡рд╛ рдкрд░ рдЦреАрдВрдЪреЗрдВред



рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд▓реЙрдЧрд┐рдВрдЧ рдХреА рдЬрд╛рддреА рд╣реИ:

public partial class MyService : ServiceBase
{
public MyService()
{
InitializeComponent();
}

protected override void OnStart( string [] args)
{
AddLog( "start" );
}

protected override void OnStop()
{
AddLog( "stop" );
}

public void AddLog( string log)
{
try
{
if (!EventLog.SourceExists( "MyExampleService" ))
{
EventLog.CreateEventSource( "MyExampleService" , "MyExampleService" );
}
eventLog1.Source = "MyExampleService" ;
eventLog1.WriteEntry(log);
}
catch {}
}
}


* This source code was highlighted with Source Code Highlighter .


рдЪрд░рдг 4. рд╕реНрдерд╛рдкрдирд╛ред


рд╕реЗрд╡рд╛ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдкрдиреА рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдП рдкрде рдкрд╛рд╕ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЗрд╕ рдлреЙрд░реНрдо рдХрд╛ install.bat рдмрдирд╛рдпрд╛:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\installutil.exe D:\...\ExampleSrv\bin\Debug\ExampleSrv.exe
pause


рдпрджрд┐ рдЖрдкрдиреЗ рдЦрд╛рддрд╛ рдХрд╛ рдореВрд▓реНрдп рдЪрдпрдирд┐рдд рдХрд┐рдпрд╛ рд╣реИ - serviceProcessInstaller рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдлрд╝реАрд▓реНрдб, рддреЛ рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рджреМрд░рд╛рди рдЖрдкрдХреЛ рдЙрд╕ рдЦрд╛рддреЗ рдХреЗ рд▓реЙрдЧрд┐рди рдФрд░ рдкрд╛рд╕рд╡рд░реНрдб рдХреЛ рджрд░реНрдЬ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬрд┐рд╕рдХреЗ рддрд╣рдд рд╕реЗрд╡рд╛ рд╢реБрд░реВ рдХреА рдЬрд╛рдПрдЧреАред рдЪреЗрддрд╛рд╡рдиреА! рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рдбреЛрдореЗрди рд▓рд┐рдЦрдирд╛!

рд╣рдо рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдмреИрдЪ рдлрд╝рд╛рдЗрд▓ рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЕрдВрдд рдореЗрдВ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╣реИрдВ:

рдкреНрд░рддрд┐рдмрджреНрдз рдЪрд░рдг рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреВрд░рд╛ рд╣реБрдЖред
рд▓реЗрди-рджреЗрди рд╕реНрдерд╛рдкрд┐рдд рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИред

рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╕реЗрд╡рд╛ рд╕реНрдерд╛рдкрд┐рдд рд╣реИред
рд╣рдо рдЬрд╛рдБрдЪ рдХрд░рддреЗ рд╣реИрдВ:



рдпрд╣ рд╕реНрдерд╛рдкрд┐рдд рд╣реИред


рдПрдХ рджреЛ рдмрд╛рд░ рд╣рдо рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд░реБрдХ рдЬрд╛рддреЗ рд╣реИрдВред рд╣рдо рд▓реЙрдЧ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ:



рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рд╕реЗрд╡рд╛ рдХрдм рд╢реБрд░реВ рдФрд░ рдмрдВрдж рд╣реБрдИред


рд╣рдорд╛рд░реА рд╕реЗрд╡рд╛ рддреИрдпрд╛рд░ рд╣реИред


рд╕рд╛рдордЧреНрд░реА рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рдпрд╣рд╛рдБ рд╕реЗ рд▓реА рдЧрдИ рд╣реИ:
msdn.microsoft.com/en-us/library/zt39148a (VS.80) .aspx

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


All Articles