Іноді може знадобитися взяти виконуваний файл і зареєструвати його в якості служби Windows. Для цього є кілька способів, я зазвичай користуюся двома з них.
Для створення і служби з командного рядка можна скористатися програмою SC (Sc.exe). SC вдає із себе утиліту командного рядка, яка реалізує виклики всіх функцій інтерфейсу прикладного програмування (API) управління службами Windows. З її допомогою можна проводити будь-які дії зі службами - переглядати стан, управляти (запускати, зупиняти і т.п.), змінювати параметри, а також створювати нові служби.
При створенні служби за допомогою SC немає необхідності вручну створювати записи в реєстрі і потім перезавантажувати комп'ютер, щоб забезпечити оновлення бази даних диспетчером служб. Також SC дозволяє вказати ім'я віддаленого комп'ютера, що дає можливість управляти службами як на локальному, так і на віддаленому комп'ютері.
Для створення нового сервісу запускаємо команду Sc create. Вона створює запис служби в реєстрі та в базі даних диспетчера служб. Sc create має наступний синтаксис:
sc create [ServiceName] [binPath =] <параметр1=> <параметр2=>
ServiceName - вказує ім'я, яке буде присвоєно розділу служби в реєстрі. Майте на увазі, що це ім'я відрізняється від відображуваного імені служби (імені, яке відображається в оснащенні «Services»);
binPath - вказує шлях до виконуваного файлу служби.
Для прикладу створимо службу MyService, вкажемо псевдонім My New Service, задамо тип служби і поставимо її на авто-запуск:
Sc create MyService binPath = C: \ MyService \ MyService.exe DisplayName = "My New Service" type = own start = auto
Потім відкриємо оснащення «Services» і подивимося результат.
Змінювати параметри вже створеної служби можна командою Sc config. Наприклад, мені не сподобалося псевдонім служби і я хочу його змінити:
Sc config MyService DisplayName = "My Service"
Ну і повністю видалити службу можна ось так:
Sc delete MyService
PowerShell може майже все 🙂. в тому числі і управляти службами Windows. Створити нову службу можна за допомогою командлета New-Service. Створимо такий же сервіс, як і в попередньому прикладі, тільки додамо до нього опис (Description):
New-Service -Name MyService -BinaryPathName C: \ MyService \ MyService.exe`
-DisplayName "My New Service" -Description "Very Important Service. "
Змінити параметри служби можна Командлети Set-Service:
Set-Service -Name MyService -Description "Not Very Important Service" -StartupType Manual
В принципі PowerShell має приблизно такий же функціонал як і Sc.exe, хіба що дозволяє додати опис. А ось для видалення служб в PS простого способу немає, доведеться скористатися ось такою конструкцією:
(Get-WmiObject win32_service -Filter "name = 'MyService'"). Delete ()
Тому особисто я вважаю за краще використовувати Sc.exe.