Aplikaci spouštíme jako systémovou službu. Změna nastavení spouštění služby

Nejnovější aktualizace: 31.10.2015

K instalaci služby potřebujeme instalační třídu. Chcete-li jej přidat, klikněte klikněte pravým tlačítkem myší na projektu a dovnitř kontextové menu vyberte Přidat -> Komponenta... . Poté v okně pro přidání nového prvku vyberte Installer Class:

Ve výchozím nastavení je pro soubor instalačního programu vygenerován název Installer1.cs. Nechme toto jméno.

Po přidání bude instalační uzel v okně Solution Explorer obsahovat dva soubory: samotný soubor třídy Installer1 a soubor návrháře Installer1.Designer.cs. Otevřeme soubor s kódem. Nyní to vypadá takto:

Použití systému; pomocí System.Collections; pomocí System.Collections.Generic; pomocí System.ComponentModel; pomocí System.Configuration.Install; pomocí System.Linq; pomocí System.Threading.Tasks; jmenný prostor FileWatcherService ( veřejná částečná třída Installer1: System.Configuration.Install.Installer ( public Installer1() ( InitializeComponent(); ) ) )

Nyní to změníme následovně:

Použití System.ComponentModel; pomocí System.ServiceProcess; pomocí System.Configuration.Install; jmenný prostor FileWatcherService ( veřejná dílčí třída Installer1: Installer ( ServiceInstaller serviceInstaller; ServiceProcessInstaller processInstaller; public Installer1() ( InitializeComponent(); serviceInstaller = nový ServiceInstaller(); processInstaller = nový ServiceProcessInstaller(); processInstaller.Account = ServiceAccount.LocaltStarySystem; = ServiceStartMode.Manual serviceInstaller.ServiceName = "Služba1";

Třída instalačního programu dědí z této třídy System.Configuration.Install.Installer. Atribut označuje, že třída Installer1 by měla být volána při instalaci sestavení, tedy služby.

Definuje řadu metod: Install() (instalace), Commit() (dokončí transakci instalace), Rollback() (obnoví stav počítače před instalací) a Uninstall() (odstranění). V případě potřeby je můžeme předefinovat. V našem případě ale použijeme pouze konstruktor.

Konstruktor volá metodu InitializeComponent(), která je navržena k provedení počáteční inicializace. Je definován v souboru návrháře Installer1.Designer.cs a v podstatě nedělá nic:

Private System.ComponentModel.ICcontainer komponenty = null; private void InitializeComponent() ( komponenty = new System.ComponentModel.Container(); )

K instalaci služby potřebujeme také třídy ServiceInstaller a ServiceProcessInstaller. Proč zrovna dvě třídy? ServiceProcessInstaller spravuje nastavení hodnot pro všechny spuštěné služby v rámci jednoho procesu (jak je uvedeno v předchozím tématu, Hlavní metoda Třída Program může spouštět více služeb současně). Třída ServiceInstaller je navržena pro konfiguraci hodnot pro každou ze spuštěných služeb. To znamená, že pokud spustíme tři služby, pak se pro každou službu vytvoří vlastní objekt ServiceInstaller. Ale v našem případě jsme v minulém tématu definovali pouze jednu službu ke spuštění, takže budeme mít pouze jednu instanci objektů obou tříd.

Prostřednictvím vlastností vám obě třídy umožňují nastavit nastavení služeb. Hlavní vlastnosti ServiceProcessInstaller:

    Uživatelské jméno: určuje, pod kterým účtem bude služba spuštěna

    Heslo : Definuje heslo pro spuštění služby

    Účet : Definuje typ účtu. Může nabývat jedné z hodnot výčtu ServiceAccount:

    • Místní systém: účet uděluje široká privilegia místní počítač a odpovídá počítači v síti

      LocalService: Účet odpovídá neprivilegovanému uživateli na místním počítači a poskytuje přístup komukoli vzdálený server anonymní přístupové údaje

      NetworkService: Účet poskytuje rozsáhlá místní oprávnění a také poskytuje libovolnému vzdálenému serveru přihlašovací údaje počítače

      Uživatel: definován účet konkrétního uživatele online

    HelpText: Vrátí nápovědu obsahující informace o instalaci služby

Nějaký nejdůležitější vlastnosti ServiceInstaller:

    StartType: Určuje, zda se má služba spustit automaticky nebo ručně. Může nabývat následujících hodnot: ServiceStartMode.Automatic ( automatický start), ServiceStartMode.Manual (manuální) a ServiceStartMode.Disabled (služba je ve výchozím nastavení zakázána)

    DelayedAutoStart: určuje, zda se služba nemá spustit ihned po nabootování operačního systému, ale o něco později

    DisplayName: Nastavuje název služby, která se bude zobrazovat různé utilityřízení služeb

    ServiceName: název služby, musí odpovídat hodnotě vlastnosti ServiceName třídy služby

To znamená, že v našem případě je služba nastavena na ruční spuštění a bude jí udělena široká oprávnění.

Nakonec musí být oba objekty instalačního programu přidány do kolekce Installers: Installers.Add()

Máme tedy připravený servisní kód a instalační kód. Nyní zkompilujeme projekt a v projektu ve složce přihrádka/ladit Budeme mít spustitelný soubor služby, který se bude volat jménem projektu a bude mít příponu exe. Například v mém případě se nazývá FileWatcherService.exe.

A nyní musíme službu nainstalovat. K tomu musíme běžet speciální utilita InstallUtil.exe a předejte mu název souboru služby.

Nástroj InstallUtil.exe naleznete v cestě C:\Windows\Microsoft.NET\Framework64\v4.0.30319 pro 64bitové platformy a C:\Windows\Microsoft.NET\Framework\v4.0.30319 pro 32-bit.

Spustitelný soubor služby můžete také přesunout na jiné místo, například jsem ho umístil do složky D://služby. Poté bude instalace služby na příkazovém řádku vypadat takto:

A pokud po úspěšné instalaci přejdeme do konzole služeb, můžeme najít nově nainstalovanou službu.

Můžeme jej spustit a provede všechny akce, které jsme v něm definovali.

Pokud již službu nepotřebujeme a chceme ji odstranit, můžeme použít stejný nástroj tak, že mu předáme příznak u:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319>InstallUtil.exe /u D://servces/FileSystemWatcher.exe

A po spuštění cos tuto službu bude sledovat všechny akce se soubory ve složce D://Temp a zapíše informace o akcích do textového souboru.

Chtěli jste někdy spustit aplikaci jako systémová služba? Myslím, že ano, vzhledem k tomu, že některé programy mají tuto funkci ve výchozím nastavení zabudovanou. Věděli jste, že aplikace běžící jako služba běží mnohem rychleji a zabírá méně místa v paměti?

V tomto článku se podíváme na malou utilitku s názvem Any Service, která vám dvěma kliknutími pomůže spustit jakoukoli aplikaci jako systémovou službu. Jakákoli služba se skládá ze dvou standardní inženýrské sítě srvinstw A instsrv součástí a pro Windows 2000 Server normální provoz budete potřebovat administrátorská práva.

Program je zcela zdarma, zabírá pouze 49 Kb a nevyžaduje instalaci. Rozhraní je intuitivní a obsahuje podrobné vysvětlení ve formě popisků.

Hlavní okno programu vám to umožňuje primární nastavení vaše budoucí služba:


Do prvního pole zadejte úplnou cestu k výkonnému souboru aplikace, která bude spuštěna jako služba. Ve sloupci „Název služby“ uvedeme, jak se bude naše služba jmenovat. V "Popis služby" - jakýkoli popis nové služby, kterému rozumíte.

  • Interakce s plochou - zkontrolujte, zda má aplikace ikonu v systémové liště;
  • Autostart service – zaškrtněte, zda chcete, aby se služba spouštěla ​​automaticky;
  • Spustit ihned po vytvoření – zaškrtněte toto políčko, pokud chcete, aby se služba spustila ihned po vytvoření;

Jako příklad toho, jak nástroj funguje, zkusme spustit populárního správce souborů Total Commander jako systémovou službu.



Po vyplnění všech požadovaných polí klikněte na tlačítko „Vytvořit“.


To je vše, nová služba byla vytvořena a je připravena k práci. Na výsledek svých akcí se můžete podívat pomocí tlačítka „Služby“, které otevře skupinový modul snap-in.



Jak vidíte, naše nová služba Total Commander spuštěna. Nyní můžete jeho nastavení změnit stejně jako u jakékoli jiné systémové služby.

Chcete-li službu odebrat, použijte tlačítko "Smazat..." v hlavním okně programu. Před vámi se otevře následující okno:


najdeme požadovanou službu a klikněte na "Smazat". Více služeb Total Commander neexistuje.

Známé problémy: Před prvním spuštěním je vhodné deaktivovat antivirový program jinak další práce program nebude možný, protože při prvním spuštění hledá oba nástroje (srvinstw a instsrv) ve složce %WINDIR%\System32\ a pokud je nenajde, zkopíruje je ze svého vlastního zdroje.

Tento článek bude hovořit o tom, jak upravit nastavení pro spouštění služeb ve Windows pomocí příkladu služby 1C:Enterprise 8.3 Server Agent. Ukáže vám, jak nakonfigurovat typ spouštění služeb, změnit přihlašovací údaje pro spouštění služby a změnit parametry spouštění spustitelného souboru služby.

1. Změna nastavení spouštění služby

Předpokládejme, že máme spuštěnou službu, ať je to „1C:Enterprise 8 Server Agent“. Chcete-li upravit vlastnosti spuštění této služby, přejděte na „ Služby"(Služby).

Poté ve stromu složek nalevo postupujte podle cesty:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services

Poté v seznamu vyberte skupinu s názvem služby, jejíž vlastnosti je třeba upravit. Zároveň v okně vpravo uvidíme všechny parametry této služby.

Dvakrát klikněte na název parametru, který je třeba změnit, a zadejte novou hodnotu.

Předpokládejme například, že potřebujeme spustit server 1C:Enterprise v režimu ladění, tj. -deug. Chcete-li to provést, změňte hodnotu parametru ImagePath.

klikněte na " OK", uložte změny a zavřete editor registru.

Restartujte službu, aby se změny projevily. Udělejte toto mono také ze snímku " Služby" (Služby) kliknutím pravým tlačítkem myši na název služby v seznamu a výběrem " Restartujte"(Restartovat).

To je vše. Změny se projevily a agent serveru je spuštěn v režimu ladění.

Pomohl vám tento článek?

Jak spustit aplikaci jako službu Windows



Je možné běhat klientská aplikace jako službu? V jednom z článků způsoby, jak vytvořit službu Windows pravidelné prostředky OS. Ne každou konzolovou aplikaci však bude možné spustit jako službu a programy s ní grafické rozhraní Principiálně nevědí, jak takto pracovat. Stále je ale možné aplikaci provozovat jako službu a program nám s tím pomůže původní název Manažer nesání.

NSSM je zdarma software S open source a podporuje všechny operace systémy Microsoft, počínaje Windows 2000 a konče Windows 8. NSSM nevyžaduje instalaci, stačí jej stáhnout a rozbalit. Distribuce obsahuje verze pro 32bitové a 64bitové operační systémy. Program můžete získat z webové stránky nssm.cc na adrese momentálně poslední stabilní verze 2.21.1, který budu používat.
Abychom demonstrovali schopnosti NSSM, zkusme se spustit Poznámkový blok Windows jako služba v systému Windows 8.1.

Vytvoření služby

Chcete-li vytvořit službu s názvem poznámkový blok zahájit příkazová konzole, přejděte do složky s rozbaleným NSSM (pro 64bitové Windows) a zadejte příkaz

Kód:

Instalační poznámkový blok nssm

který otevře okno grafického instalátoru NSSM. Chcete-li vytvořit službu, stačí zadat cestu spustitelný soubor a klikněte na tlačítko „Instalovat službu“. Kromě toho můžete v poli Možnosti zadat klíče potřebné ke spuštění služby.

Při vytváření nové služby můžete také zadat některé další parametry.

Na kartě Vypnutí jsou uvedeny metody vypnutí a časové limity, které se používají, když se aplikace normálně vypne nebo zhroutí. Když NSSM obdrží příkaz k zastavení (například při ukončení aplikace), pokusí se zastavit řízená aplikace normálním způsobem. Pokud aplikace nereaguje, může NSSM násilně ukončit všechny procesy a podprocesy této aplikace.

Existují čtyři kroky k ukončení aplikace a ve výchozím nastavení budou použity v tomto pořadí:

V prvním kroku se NSSM pokusí vygenerovat a odeslat událost Ctrl+C. Tato metoda funguje dobře pro konzolové aplikace nebo skripty, ale nelze je použít grafické aplikace;
NSSM pak detekuje všechna okna vytvořená aplikací a odešle jim zprávu WM_CLOSE, která způsobí ukončení aplikace;
Třetím krokem je, že NSSM vypočítá všechna vlákna vytvořená aplikací a odešle jim zprávu WM_QUIT, která bude přijata, pokud má aplikace frontu zpráv vláken;
A jako poslední možnost NSSM může volat metodu TerminateProcess() a vynutit tak ukončení aplikace.

Je možné zakázat některé nebo dokonce všechny metody, ale do různé aplikace spuštěno různé metody a pro správné vypnutí aplikace se doporučuje nechat vše tak, jak je.

Ve výchozím nastavení se při selhání služby NSSM pokusí restartovat. Na kartě „Akce ukončení“ můžete změnit automatická akce v případě abnormálního vypnutí aplikace a také nastavit zpoždění před automatický restart aplikací.

Na záložce „Input/Output (I/O)“ můžete nastavit přesměrování vstupu/výstupu aplikace do zadaného souboru.

Na záložce „Prostředí“ můžete nastavit nové proměnné prostředí nebo přepsat stávající.

Můžete také nepoužívat grafický shell a okamžitě vytvořte službu v konzole pomocí následujícího příkazu:

Kód:

Nssm nainstalovat poznámkový blok "C:\Windows\system32\notepad.exe"

Správa služeb

Po vytvoření služby pomocí NSSM přejdeme na Modul snap-in služeb a najděte službu poznámkového bloku. Jak vidíte, vzhledově se neliší od ostatních služeb, můžeme je také spustit, zastavit nebo změnit režim spouštění. Všimněte si však, že nssm.exe je uveden jako spustitelný soubor.

Tento materiál je zrcadlem článku na webu Poznámky k systému WINDOWS s několika poznámkami z osobní zkušenosti.

Někdy může být nutné vzít spustitelný soubor a zaregistrovat jej jako službu Windows. Existuje několik způsobů, jak to udělat. Dvě z nich jsou uvedeny níže.

Vytvořit a obsluhovat příkazový řádek Můžete použít program SC (Sc.exe). SC je nástroj příkazového řádku, který implementuje volání všech funkcí rozhraní programování aplikací(API) řízení služby Windows. S jeho pomocí můžete provádět jakékoli akce se službami - prohlížet stav, spravovat (spouštět, zastavovat atd.), měnit parametry a také vytvářet nové služby.

Když vytvoříte službu pomocí SC, nemusíte ručně vytvářet položky registru a poté restartovat počítač, aby Service Manager mohl aktualizovat databázi. SC také umožňuje zadat název vzdálený počítač, což umožňuje spravovat služby jak na lokálním, tak na vzdáleném počítači.

Chcete-li vytvořit novou službu, spusťte příkaz Sc create. Vytvoří položku služby v registru a v databázi Správce služeb. Sc create má následující syntaxi:

sc vytvořit

ServiceName – určuje název, který bude přiřazen sekci služby v registru. Všimněte si, že tento název se liší od zobrazovaného názvu služby (název, který se zobrazuje v modulu snap-in Služby);
binPath - určuje cestu ke spustitelnému souboru služby.

Vytvořme například službu MyService, zadejte zobrazovaný název Moje nová služba, nastavte typ služby a nastavte ji na automatické spouštění:

Sc create MyService binPath=C:\MyService\MyService.exe DisplayName=″Moje nová služba″ typ=vlastní start=auto

Poté otevřete modul snap-in „Služby“ a podívejte se na výsledek.

Parametry již vytvořené služby můžete změnit pomocí příkazu Sc config. Například se mi nelíbil zobrazovaný název služby a chci jej změnit:

Konfigurace Sc MyService DisplayName=″Moje služba″

Službu můžete úplně odebrat takto:

Sc smazat MyService


Poznámka. Existuje několik funkcí použití nástroje sc. Například při vytváření služby ve Windows XP musíte před argument předaný parametru vložit mezeru!

Pokud zadáme příkaz:

C:\sc create Weblogic binPath=C:\Oracle\MiddleWare\user_projects\base_domain\startWeblogic.cmd DisplayName="WebLogic" type=share start=auto error=ignore

Jako odpověď obdržíme nápovědu k použití sc bez jakékoli chybové zprávy:


Stejný příkaz zadáme vložením mezer za symbol "=":

C:\>sc create Weblogic binPath= C:\Oracle\MiddleWare\user_projects\base_domain\startWeblogic.cmd DisplayName= "WebLogic" type= sdílení start= automatická chyba= ignorovat

CreateService ÚSPĚCH

Toto je nezdokumentovaná funkce.

Také je potřeba věnovat velkou pozornost dalším parametrům. V níže uvedeném případě byly změněny hodnoty parametrů spuštění a typu:

Přijímáme zprávu

CreateService FAILED 87:

a za dvojtečkou není žádné vysvětlení.

Detailní význam parametrů lze zobrazit popř.

Chcete-li změnit parametry systémové služby, musíte zadat nové parametry příkazem:

# konfigurace sc název_služby start= parametr spuštění

Chcete-li spustit službu v operačním systému Windows, musíte do konzoly zadat:

# čistý start název_služby

Chcete-li službu zastavit:

# čistá zastávka název_služby

Restartování služby:

# restart sítě název_služby

Pokud chcete určit, které služby budou záviset na dané službě, můžete zadat sc enumpend

Nyní, abyste viděli, které služby jsou závislé na službě serveru zvané lanmanserver, musíte zadat příkaz

sc enum závisí na Lanmanserveru

Spuštění příkazu jako je tento v mém testu Windows server 2003 například ukazuje, že služby Netlogon, Dfs a počítačový prohlížeč jsou závislé na službě serveru.

Chcete-li dokončit a definovat závislosti serveru, můžete použít dílčí příkaz qc, jak je znázorněno níže

sc qc Lanmanserver

Tento příkaz vytváří devět řádků informací o službě, z nichž jeden je DEPENDENCIES. Když spustíte tento příkaz, ukáže se, že server není závislý na žádných službách. Chcete-li zjistit, které služby mají více než jednu závislost, můžete otestovat dispečera na službě Netlogon. Uvidíme, že služba Netlogon vyžaduje spuštění služeb serveru i pracovní stanice, aby mohla začít fungovat.

Někdy jsou závislosti složitější. Některé služby se mohou například spustit pouze v případě, že je spuštěna jedna z dalších tří služeb. Spuštění všech tří není nutné; Systém Windows můžete o této dynamice poučit tím, že informujete systém, že daná služba je závislá na skupině služeb. V systém Windows existuje řada služeb jako SCSI CDROM Class, SCSI miniport, Parallel arbitrator, NetBIOSGroup, NDIS a také služby primární disk a mnoho dalších. Všechny tyto služby a ovladače lze zobrazit v seznamu skupin zadáním

typ dotazu sc= service?driver?all group=

Chcete-li například zobrazit všechny služby a ovladače ve skupině služeb primárního disku, zadejte

sc typ dotazu= všechny skupiny=

Na názvech skupin nezáleží. Služby můžete přidat do existujících skupin nebo vytvořit nové skupiny služeb přidáním příkazu group= groupname do příkazu SC Create nebo pomocí SC Config k uložení služby do skupiny. Chcete-li například přidat službu Webimagemailer nová skupina nazýváno nedůležité, musíte napsat

sc config webimagemailer group= nedůležité

Službu nebo ovladač však nemůžete umístit do více než jedné skupiny služeb.

Navíc se můžete ujistit, že se služba Webimagemailer nenačte bez požadovaná skupina služby K definování fiktivní skupiny Webstartup použijeme parametr Depend= webstartup. Chcete-li systému Windows říci, že Webstartup je skupina a ne jen další služba, měli byste před její název umístit znaménko plus. Chcete-li například překonfigurovat službu Webimagemailer tak, aby byla závislá na spouštěcí skupině Webstartup, musíte zadat

sc config webimagemailer závisí= +webstartup

Tímto způsobem jsme přišli na to, jak pomocí závislostí a skupin poskytnout podrobnější kontrolu nad pořadím, ve kterém se služba načítá. A teď už se nikdo nebude divit, proč jsem byl tak potěšen, když jsem před několika lety objevil dispečera SC.

PowerShell

PowerShell umí téměř vše, včetně správy služeb Windows. Vytvořit nová služba můžete použít rutinu New-Service. Vytvořme stejnou službu jako v předchozím příkladu, jen k ní přidejte Popis:

New-Service - Name MyService -BinaryPathName C:\MyService\MyService.exe`
-Zobrazované jméno ″Moje nová služba″ -Popis ″Velmi důležitá služba!!!″

Parametry služby můžete změnit pomocí rutiny Set-Service:

Set-Service -Name MyService -Popis ″Nepříliš důležitá služba″ -StartupType Manual


PowerShell má v zásadě přibližně stejnou funkcionalitu jako Sc.exe, kromě toho, že umožňuje přidat popis. Ale odebrat služby v PS jednoduchý způsob ne, budete muset použít tuto konstrukci:

(Get-WmiObject win32_service -Filter ″name=′MyService′″).delete()




Nahoru