Kurz: Vytvoření aplikace služby pro Windows

Upozornění

Tato dokumentace není určená pro nejnovější verzi služby systému Windows. Nejnovější obsah o službách systému Windows pomocí BackgroundService šablony Služby pracovního procesu najdete tady:

Tento článek ukazuje, jak v sadě Visual Studio vytvořit aplikaci služby pro Windows, která zapisuje zprávy do protokolu událostí.

Vytvoření služby

Začněte vytvořením projektu a nastavením hodnot požadovaných pro správné fungování služby.

  1. V nabídce Soubor sady Visual Studio vyberte Nový>projekt (nebo stiskněte Klávesu Ctrl+Shift+N). Otevře se okno Nový projekt .

  2. Vyhledejte a vyberte šablonu projektu Služba systému Windows (.NET Framework).

    Poznámka

    Pokud šablonu Služby pro Windows nevidíte, možná budete muset nainstalovat úlohu Vývoj desktopových aplikací .NET pomocí Instalační program pro Visual Studio.

  3. Jako Název zadejte MyNewService a pak vyberte OK.

    Zobrazí se karta Návrh (Service1.cs [Návrh] nebo Service1.vb [Návrh]).

    Šablona projektu obsahuje třídu komponenty s názvem Service1 , která dědí z System.ServiceProcess.ServiceBase. Obsahuje většinu základního kódu služby, například kód pro spuštění služby.

Přejmenování služby

Přejmenujte službu z Service1 na MyNewService.

  1. V Průzkumník řešení vyberte Service1.cs nebo Service1.vb a v místní nabídce zvolte Přejmenovat. Přejmenujte soubor na MyNewService.cs nebo MyNewService.vb a stiskněte Enter.

    Zobrazí se automaticky otevírané okno s dotazem, jestli chcete přejmenovat všechny odkazy na prvek kódu Service1.

  2. V automaticky otevíraných oknech vyberte Ano.

    Výzva k přejmenování

  3. Na kartě Návrh vyberte v místní nabídce Možnost Vlastnosti . V okně Vlastnosti změňte hodnotu ServiceName na MyNewService.

    Vlastnosti služby

  4. V nabídce Soubor vyberte Uložit vše.

Přidání funkcí do služby

V této části přidáte do služby windows vlastní protokol událostí. Komponenta EventLog je příkladem typu komponenty, kterou můžete přidat do služby systému Windows.

Přidání funkce vlastního protokolu událostí

  1. V Průzkumník řešení v místní nabídce souboru MyNewService.cs nebo MyNewService.vb zvolte Zobrazit Designer.

  2. V panelu nástrojů rozbalte Komponenty a přetáhněte komponentu EventLog na kartu Service1.cs [Návrh] nebo Service1.vb [Návrh].

  3. V Průzkumník řešení v místní nabídce souboru MyNewService.cs nebo MyNewService.vb zvolte Zobrazit kód.

  4. Definujte vlastní protokol událostí.

    V jazyce C# upravte existující MyNewService() konstruktor, jak je znázorněno v následujícím fragmentu kódu. Pro Visual Basic přidejte New() konstruktor, jak je znázorněno v následujícím fragmentu kódu.

    public MyNewService()
    {
        InitializeComponent();
        eventLog1 = new System.Diagnostics.EventLog();
        if (!System.Diagnostics.EventLog.SourceExists("MySource"))
        {
            System.Diagnostics.EventLog.CreateEventSource(
                "MySource","MyNewLog");
        }
        eventLog1.Source = "MySource";
        eventLog1.Log = "MyNewLog";
    }
    
    ' To access the constructor in Visual Basic, select New from the
    ' method name drop-down list. 
    Public Sub New()
        MyBase.New()
        InitializeComponent()
        Me.EventLog1 = New System.Diagnostics.EventLog
        If Not System.Diagnostics.EventLog.SourceExists("MySource") Then
            System.Diagnostics.EventLog.CreateEventSource("MySource",
            "MyNewLog")
        End If
        EventLog1.Source = "MySource"
        EventLog1.Log = "MyNewLog"
    End Sub
    
  5. using Přidejte příkaz do souboru MyNewService.cs (pokud ještě neexistuje) nebo Imports příkaz do souboru MyNewService.vb pro System.Diagnostics obor názvů:

    using System.Diagnostics;
    
    Imports System.Diagnostics
    
  6. V nabídce Soubor vyberte Uložit vše.

Definovat, co se stane při spuštění služby

V editoru kódu pro Soubor MyNewService.cs nebo MyNewService.vb vyhledejte metodu OnStart . Visual Studio při vytváření projektu automaticky vytvořilo prázdnou definici metody. Přidejte kód, který při spuštění služby zapíše položku do protokolu událostí:

protected override void OnStart(string[] args)
{
    eventLog1.WriteEntry("In OnStart.");
}
' To access the OnStart in Visual Basic, select OnStart from the
' method name drop-down list. 
Protected Overrides Sub OnStart(ByVal args() As String)
    EventLog1.WriteEntry("In OnStart")
End Sub

Cyklické dotazování

Vzhledem k tomu, že aplikace služby je navržená tak, aby byla dlouhotrvající, obvykle se dotazuje nebo monitoruje systém, který jste nastavili v OnStart metodě . Po zahájení operace služby se OnStart tato metoda musí vrátit do operačního systému, aby systém nebyl zablokovaný.

Pokud chcete nastavit jednoduchý mechanismus dotazování, použijte komponentu System.Timers.Timer . Časovač vyvolá Elapsed událost v pravidelných intervalech, kdy služba může provádět monitorování. Komponentu Timer použijete takto:

  • Nastavte vlastnosti Timer komponenty v MyNewService.OnStart metodě .
  • Spusťte časovač voláním Start metody .
Nastavení mechanismu dotazování
  1. using Přidejte příkaz do souboru MyNewService.cs nebo Imports příkaz do souboru MyNewService.vb pro System.Timers obor názvů:

    using System.Timers;
    
    Imports System.Timers
    
  2. Do události přidejte následující kód pro MyNewService.OnStart nastavení mechanismu dotazování:

    // Set up a timer that triggers every minute.
    Timer timer = new Timer();
    timer.Interval = 60000; // 60 seconds
    timer.Elapsed += new ElapsedEventHandler(this.OnTimer);
    timer.Start();
    
    ' Set up a timer that triggers every minute.
    Dim timer As Timer = New Timer()
    timer.Interval = 60000 ' 60 seconds
    AddHandler timer.Elapsed, AddressOf Me.OnTimer
    timer.Start()
    
  3. MyNewService Do třídy přidejte členovou proměnnou. Obsahuje identifikátor další události, která se zapíše do protokolu událostí:

    private int eventId = 1;
    
    Private eventId As Integer = 1
    
  4. Do MyNewService třídy přidejte metodu OnTimer pro zpracování Timer.Elapsed události:

    public void OnTimer(object sender, ElapsedEventArgs args)
    {
        // TODO: Insert monitoring activities here.
        eventLog1.WriteEntry("Monitoring the System", EventLogEntryType.Information, eventId++);
    }
    
    Private Sub OnTimer(sender As Object, e As Timers.ElapsedEventArgs)
       ' TODO: Insert monitoring activities here.
       eventLog1.WriteEntry("Monitoring the System", EventLogEntryType.Information, eventId)
       eventId = eventId + 1
    End Sub
    

Místo spouštění veškeré práce v hlavním vlákně můžete úlohy spouštět pomocí pracovních vláken na pozadí. Další informace naleznete v tématu System.ComponentModel.BackgroundWorker.

Definujte, co se stane při zastavení služby.

Vložte do OnStop metody řádek kódu, který při zastavení služby přidá položku do protokolu událostí:

protected override void OnStop()
{
    eventLog1.WriteEntry("In OnStop.");
}
Protected Overrides Sub OnStop()
    EventLog1.WriteEntry("In OnStop.")
End Sub

Definování dalších akcí pro službu

Můžete přepsat OnPausemetody , OnContinuea OnShutdown a definovat další zpracování pro vaši komponentu.

Následující kód ukazuje, jak můžete přepsat metodu OnContinue ve MyNewService třídě :

protected override void OnContinue()
{
    eventLog1.WriteEntry("In OnContinue.");
}
Protected Overrides Sub OnContinue()
    EventLog1.WriteEntry("In OnContinue.")
End Sub

Nastavení stavu služby

Služby hlásí svůj stav správci řízení služeb , aby uživatel mohl zjistit, zda služba funguje správně. Ve výchozím nastavení služba dědí z ServiceBase hlásí omezenou sadu nastavení stavu, mezi které patří SERVICE_STOPPED, SERVICE_PAUSED a SERVICE_RUNNING. Pokud spuštění služby nějakou dobu trvá, je vhodné nahlásit stav SERVICE_START_PENDING.

Nastavení stavu SERVICE_START_PENDING a SERVICE_STOP_PENDING můžete implementovat přidáním kódu, který volá funkci Windows SetServiceStatus .

Implementace stavu čekání na vyřízení služby

  1. using Přidejte příkaz do souboru MyNewService.cs nebo Imports příkaz do souboru MyNewService.vb pro System.Runtime.InteropServices obor názvů:

    using System.Runtime.InteropServices;
    
    Imports System.Runtime.InteropServices
    
  2. Do souboru MyNewService.cs nebo MyNewService.vb přidejte následující kód, který deklaruje ServiceState hodnoty a přidá strukturu stavu, kterou použijete ve volání volání volání platformy:

    public enum ServiceState
    {
        SERVICE_STOPPED = 0x00000001,
        SERVICE_START_PENDING = 0x00000002,
        SERVICE_STOP_PENDING = 0x00000003,
        SERVICE_RUNNING = 0x00000004,
        SERVICE_CONTINUE_PENDING = 0x00000005,
        SERVICE_PAUSE_PENDING = 0x00000006,
        SERVICE_PAUSED = 0x00000007,
    }
    
    [StructLayout(LayoutKind.Sequential)]
    public struct ServiceStatus
    {
        public int dwServiceType;
        public ServiceState dwCurrentState;
        public int dwControlsAccepted;
        public int dwWin32ExitCode;
        public int dwServiceSpecificExitCode;
        public int dwCheckPoint;
        public int dwWaitHint;
    };
    
    Public Enum ServiceState
        SERVICE_STOPPED = 1
        SERVICE_START_PENDING = 2
        SERVICE_STOP_PENDING = 3
        SERVICE_RUNNING = 4
        SERVICE_CONTINUE_PENDING = 5
        SERVICE_PAUSE_PENDING = 6
        SERVICE_PAUSED = 7
    End Enum
    
    <StructLayout(LayoutKind.Sequential)>
    Public Structure ServiceStatus
        Public dwServiceType As Long
        Public dwCurrentState As ServiceState
        Public dwControlsAccepted As Long
        Public dwWin32ExitCode As Long
        Public dwServiceSpecificExitCode As Long
        Public dwCheckPoint As Long
        Public dwWaitHint As Long
    End Structure
    

    Poznámka

    Správce řízení služeb používá dwWaitHint členy a dwCheckpointSERVICE_STATUS struktury k určení, kolik času má čekat na spuštění nebo vypnutí služby systému Windows. Pokud vaše OnStart metody a OnStop běží dlouho, může služba požádat o více času opětovným voláním SetServiceStatus s vyšší dwCheckPoint hodnotou.

  3. MyNewService Ve třídě deklarujte funkci SetServiceStatus pomocí volání platformy:

    [DllImport("advapi32.dll", SetLastError = true)]
    private static extern bool SetServiceStatus(System.IntPtr handle, ref ServiceStatus serviceStatus);
    
    Declare Auto Function SetServiceStatus Lib "advapi32.dll" (ByVal handle As IntPtr, ByRef serviceStatus As ServiceStatus) As Boolean
    
  4. Pokud chcete implementovat stav SERVICE_START_PENDING, přidejte na začátek OnStart metody následující kód:

    // Update the service state to Start Pending.
    ServiceStatus serviceStatus = new ServiceStatus();
    serviceStatus.dwCurrentState = ServiceState.SERVICE_START_PENDING;
    serviceStatus.dwWaitHint = 100000;
    SetServiceStatus(this.ServiceHandle, ref serviceStatus);
    
    ' Update the service state to Start Pending.
    Dim serviceStatus As ServiceStatus = New ServiceStatus()
    serviceStatus.dwCurrentState = ServiceState.SERVICE_START_PENDING
    serviceStatus.dwWaitHint = 100000
    SetServiceStatus(Me.ServiceHandle, serviceStatus)
    
  5. Na konec OnStart metody přidejte kód, který nastaví stav na SERVICE_RUNNING:

    // Update the service state to Running.
    serviceStatus.dwCurrentState = ServiceState.SERVICE_RUNNING;
    SetServiceStatus(this.ServiceHandle, ref serviceStatus);
    
    ' Update the service state to Running.
    serviceStatus.dwCurrentState = ServiceState.SERVICE_RUNNING
    SetServiceStatus(Me.ServiceHandle, serviceStatus)
    
  6. (Volitelné) Pokud OnStop je metoda dlouhotrvající, opakujte tento postup v OnStop metodě . Implementujte stav SERVICE_STOP_PENDING a vraťte stav SERVICE_STOPPED před ukončením OnStop metody.

    Příklad:

    // Update the service state to Stop Pending.
    ServiceStatus serviceStatus = new ServiceStatus();
    serviceStatus.dwCurrentState = ServiceState.SERVICE_STOP_PENDING;
    serviceStatus.dwWaitHint = 100000;
    SetServiceStatus(this.ServiceHandle, ref serviceStatus);
    
    // Update the service state to Stopped.
    serviceStatus.dwCurrentState = ServiceState.SERVICE_STOPPED;
    SetServiceStatus(this.ServiceHandle, ref serviceStatus);
    
    ' Update the service state to Stop Pending.
    Dim serviceStatus As ServiceStatus = New ServiceStatus()
    serviceStatus.dwCurrentState = ServiceState.SERVICE_STOP_PENDING
    serviceStatus.dwWaitHint = 100000
    SetServiceStatus(Me.ServiceHandle, serviceStatus)
    
    ' Update the service state to Stopped.
    serviceStatus.dwCurrentState = ServiceState.SERVICE_STOPPED
    SetServiceStatus(Me.ServiceHandle, serviceStatus)
    

Přidání instalačních programů do služby

Před spuštěním služby systému Windows ji musíte nainstalovat, což ji zaregistruje ve Správci řízení služeb. Přidejte do projektu instalační programy pro zpracování podrobností registrace.

  1. V Průzkumník řešení v místní nabídce souboru MyNewService.cs nebo MyNewService.vb zvolte Zobrazit Designer.

  2. V návrhovém zobrazení vyberte oblast pozadí a pak v místní nabídce zvolte Přidat instalační program .

    Sada Visual Studio ve výchozím nastavení přidá do projektu třídu komponenty s názvem ProjectInstaller, která obsahuje dva instalační programy. Tyto instalační programy jsou určené pro vaši službu a pro proces přidružený ke službě.

  3. V návrhovém zobrazení pro ProjectInstaller vyberte serviceInstaller1 pro projekt Visual C# nebo ServiceInstaller1 pro projekt Jazyka Visual Basic a pak v místní nabídce zvolte Vlastnosti .

  4. V okně Vlastnosti ověřte, že je vlastnost nastavená ServiceName na MyNewService.

  5. Přidejte do Description vlastnosti text, například Ukázková služba.

    Tento text se zobrazí ve sloupci Popis okna Služby a popisuje službu uživateli.

    Popis služby v okně Služby.

  6. Přidejte text do DisplayName vlastnosti . Například Zobrazovaný název myNewService.

    Tento text se zobrazí ve sloupci Zobrazovaný název v okně Služby . Tento název se může lišit od ServiceName vlastnosti, což je název, který systém používá (například název, který používáte pro net start příkaz ke spuštění služby).

  7. V rozevíracím StartType seznamu nastavte vlastnost na Automatic hodnotu .

  8. Po dokončení by okna Vlastnosti měla vypadat jako na následujícím obrázku:

    Vlastnosti instalačního programu pro službu systému Windows

  9. V návrhovém zobrazení pro ProjectInstaller zvolte serviceProcessInstaller1 pro projekt Visual C# nebo ServiceProcessInstaller1 pro projekt Jazyka Visual Basic a pak v místní nabídce zvolte Vlastnosti . V rozevíracím Account seznamu nastavte vlastnost na LocalSystem hodnotu .

    Toto nastavení nainstaluje službu a spustí ji pomocí místního systémového účtu.

    Důležité

    Účet LocalSystem má široká oprávnění, včetně možnosti zápisu do protokolu událostí. Používejte tento účet opatrně, protože může zvýšit riziko napadení škodlivým softwarem. U jiných úloh zvažte použití LocalService účtu, který funguje jako neprivilegovaný uživatel na místním počítači a prezentuje anonymní přihlašovací údaje libovolnému vzdálenému serveru. Tento příklad selže, pokud se pokusíte použít LocalService účet, protože potřebuje oprávnění k zápisu do protokolu událostí.

Další informace o instalačních službách najdete v tématu Postupy: Přidání instalačních programů do aplikace služby.

(Volitelné) Nastavení parametrů spouštění

Poznámka

Než se rozhodnete přidat spouštěcí parametry, zvažte, jestli je to nejlepší způsob předávání informací do vaší služby. I když se snadno používají a parsují a uživatel je může snadno přepsat, může být pro uživatele obtížnější je najít a používat bez dokumentace. Obecně platí, že pokud vaše služba vyžaduje více než jen několik parametrů spuštění, měli byste místo toho použít registr nebo konfigurační soubor.

Služba systému Windows může přijímat argumenty příkazového řádku nebo spouštěcí parametry. Když přidáte kód pro zpracování parametrů spuštění, může uživatel spustit službu s vlastními parametry spuštění v okně vlastností služby. Tyto spouštěcí parametry se však při příštím spuštění služby neuchovávají. Pokud chcete parametry spouštění nastavit trvale, nastavte je v registru.

Každá služba systému Windows má v podklíči HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services položku registru. Pod podklíčem každé služby použijte podklíč Parameters k ukládání informací, ke kterým má vaše služba přístup. Konfigurační soubory aplikace můžete pro službu Systému Windows používat stejně jako u jiných typů programů. Ukázkový kód najdete v tématu ConfigurationManager.AppSettings.

Přidání spouštěcích parametrů

  1. Vyberte Soubor Program.cs nebo MyNewService.Designer. vb a pak v místní nabídce zvolte Zobrazit kód. Main V metodě změňte kód tak, aby přidal vstupní parametr a předal ho konstruktoru služby:

    static void Main(string[] args)
    {
        ServiceBase[] ServicesToRun;
        ServicesToRun = new ServiceBase[]
        {
            new MyNewService(args)
        };
        ServiceBase.Run(ServicesToRun);
    }
    
    Shared Sub Main(ByVal cmdArgs() As String)
        Dim ServicesToRun() As System.ServiceProcess.ServiceBase = New System.ServiceProcess.ServiceBase() {New MyNewService(cmdArgs)}
        System.ServiceProcess.ServiceBase.Run(ServicesToRun)
    End Sub
    
  2. V souboru MyNewService.cs nebo MyNewService.vb změňte MyNewService konstruktor tak, aby zpracovával vstupní parametr následujícím způsobem:

    using System.Diagnostics;
    
    public MyNewService(string[] args)
    {
        InitializeComponent();
    
        string eventSourceName = "MySource";
        string logName = "MyNewLog";
    
        if (args.Length > 0)
        {
           eventSourceName = args[0];
        }
    
        if (args.Length > 1)
        {
            logName = args[1];
        }
    
        eventLog1 = new EventLog();
    
        if (!EventLog.SourceExists(eventSourceName))
        {
            EventLog.CreateEventSource(eventSourceName, logName);
        }
    
        eventLog1.Source = eventSourceName;
        eventLog1.Log = logName;
    }
    
    Imports System.Diagnostics
    
    Public Sub New(ByVal cmdArgs() As String)
        InitializeComponent()
        Dim eventSourceName As String = "MySource"
        Dim logName As String = "MyNewLog"
        If (cmdArgs.Count() > 0) Then
            eventSourceName = cmdArgs(0)
        End If
        If (cmdArgs.Count() > 1) Then
            logName = cmdArgs(1)
        End If
        eventLog1 = New EventLog()
        If (Not EventLog.SourceExists(eventSourceName)) Then
            EventLog.CreateEventSource(eventSourceName, logName)
        End If
        eventLog1.Source = eventSourceName
        eventLog1.Log = logName
    End Sub
    

    Tento kód nastaví zdroj událostí a název protokolu podle spouštěcích parametrů, které uživatel zadá. Pokud nejsou zadány žádné argumenty, použije se výchozí hodnoty.

  3. Chcete-li zadat argumenty příkazového řádku, přidejte následující kód do ProjectInstaller třídy v souboru ProjectInstaller.cs nebo ProjectInstaller.vb:

    protected override void OnBeforeInstall(IDictionary savedState)
    {
        string parameter = "MySource1\" \"MyLogFile1";
        Context.Parameters["assemblypath"] = "\"" + Context.Parameters["assemblypath"] + "\" \"" + parameter + "\"";
        base.OnBeforeInstall(savedState);
    }
    
    Protected Overrides Sub OnBeforeInstall(ByVal savedState As IDictionary)
        Dim parameter As String = "MySource1"" ""MyLogFile1"
        Context.Parameters("assemblypath") = """" + Context.Parameters("assemblypath") + """ """ + parameter + """"
        MyBase.OnBeforeInstall(savedState)
    End Sub
    

    Tato hodnota obvykle obsahuje úplnou cestu ke spustitelnému souboru pro službu systému Windows. Aby se služba spustila správně, musí uživatel zadat uvozovky pro cestu a každý jednotlivý parametr. Uživatel může změnit parametry v položce registru ImagePath a změnit parametry spuštění služby systému Windows. Lepším způsobem je ale hodnotu změnit programově a zpřístupnit funkci uživatelsky přívětivým způsobem, například pomocí nástroje pro správu nebo konfiguraci.

Sestavení služby

  1. V Průzkumník řešení zvolte v místní nabídce projektu MyNewServicemožnost Vlastnosti.

    Zobrazí se stránky vlastností projektu.

  2. Na kartě Aplikace v seznamu Spouštěcí objekt zvolte MyNewService.Program nebo Sub Main pro projekty Jazyka Visual Basic.

  3. Projekt sestavíte tak, že v Průzkumník řešení zvolíte z místní nabídky projektu Možnost Sestavit (nebo stiskněte klávesu Ctrl+Shift+B).

Instalace služby

Teď, když jste vytvořili službu pro Windows, ji můžete nainstalovat. Pokud chcete nainstalovat službu systému Windows, musíte mít na počítači, na kterém je nainstalovaná, přihlašovací údaje správce.

  1. Otevřete Příkazový řádek pro vývojáře pro Visual Studio s přihlašovacími údaji správce.

  2. V okně Developer Command Prompt pro Visual Studio přejděte do složky, která obsahuje výstup projektu (ve výchozím nastavení je to podadresář projektu \bin\Debug ).

  3. Zadejte následující příkaz:

    installutil MyNewService.exe
    

    Pokud se služba úspěšně nainstaluje, příkaz oznámí úspěch.

    Pokud systém nemůže najít installutil.exe, ujistěte se, že na počítači existuje. Tento nástroj je nainstalován spolu s rozhraním .NET Framework do složky %windir%\Microsoft.NET\Framework[64]\<verze rozhraní>. Například výchozí cesta pro 64bitovou verzi je %windir%\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe.

    Pokud procesinstallutil.exe selže, zkontrolujte instalační protokol a zjistěte důvod. Ve výchozím nastavení je protokol ve stejné složce jako spustitelný soubor služby. Instalace může selhat v následujících případech:

    • Třída RunInstallerAttribute se ve třídě nenachází ProjectInstaller .
    • Atribut není nastavený na truehodnotu .
    • Třída ProjectInstaller není definována jako public.

Další informace najdete v tématu Postupy: Instalace a odinstalace služeb.

Spuštění a spuštění služby

  1. Ve Windows otevřete desktopovou aplikaci Služby . Stisknutím klávesy Windows+R otevřete okno Spustit , zadejte services.msc a pak stiskněte Klávesu Enter nebo vyberte OK.

    Vaše služba by měla být uvedená v seznamu Služby a zobrazovaná abecedně podle zobrazovaného názvu, který jste pro ni nastavili.

    MyNewService v okně Služby.

  2. Službu spustíte tak, že v místní nabídce služby zvolíte Start .

  3. Službu zastavíte tak, že v místní nabídce služby zvolíte Zastavit .

  4. (Volitelné) Na příkazovém řádku spusťte a zastavte službu pomocí příkazů net start <service name> a net stop <service name> .

Ověření výstupu protokolu událostí vaší služby

  1. Ve Windows otevřete desktopovou aplikaci Prohlížeč událostí. Na panelu hledání ve Windows zadejte Prohlížeč událostí a ve výsledcích hledání vyberte Prohlížeč událostí.

    Tip

    V sadě Visual Studio můžete získat přístup k protokolům událostí tak, že otevřete Průzkumníka serveru z nabídky Zobrazení (nebo stisknete klávesu Ctrl+Alt+S) a rozbalíte uzel Protokoly událostí pro místní počítač.

  2. V Prohlížeč událostí rozbalte Protokoly aplikací a služeb.

  3. Vyhledejte výpis pro MyNewLog (nebo MyLogFile1 , pokud jste postupovali podle postupu přidání argumentů příkazového řádku) a rozbalte ho. Měly by se zobrazit položky pro dvě akce (spuštění a zastavení), které služba provedla.

    Zobrazení položek protokolu událostí pomocí Prohlížeč událostí

Vyčištění prostředků

Pokud už aplikaci Služby pro Windows nepotřebujete, můžete ji odebrat.

  1. Otevřete Příkazový řádek pro vývojáře pro Visual Studio s přihlašovacími údaji správce.

  2. V okně Developer Command Prompt for Visual Studio přejděte do složky, která obsahuje výstup vašeho projektu.

  3. Zadejte následující příkaz:

    installutil.exe /u MyNewService.exe
    

    Pokud se služba úspěšně odinstaluje, příkaz ohlásí, že se služba úspěšně odebrala. Další informace najdete v tématu Postupy: Instalace a odinstalace služeb.

Další kroky

Teď, když jste službu vytvořili, můžete:

  • Vytvořte samostatný instalační program, který budou ostatní používat k instalaci služby systému Windows. K vytvoření instalačního programu pro službu systému Windows použijte sadu nástrojů WiX Toolset . Další informace najdete v tématu Vytvoření instalačního balíčku.

  • Prozkoumejte komponentu ServiceController , která umožňuje odesílat příkazy do služby, kterou jste nainstalovali.

  • Místo vytváření protokolu událostí při spuštění aplikace použijte instalační program k vytvoření protokolu událostí při instalaci aplikace. Instalační program odstraní protokol událostí při odinstalaci aplikace. Další informace naleznete v tématu EventLogInstaller.

Viz také