Как создать новую службу в windows 7

We already discussed how to delete a service in Windows 10, 8, and 7, so now we will discuss how to add a Service which is handy if you want to add or restore a Service.

Adding a service is easy using the Command Prompt or PowerShell as an administrator.

Type in sc.exe create SERVICENAME binpath= «PATH TO SERVICE»

Notes:
Replace SERVICENAME without spaces in the name
Be sure to leave a space after binpath=

For example, I can create a PowerShell shortcut by using:
sc.exe create PowerShell binpath= «C:\Windows\System32\Windows\PowerShellv1.0powershell.exe»

Open Services (Windows key + R and services.msc) and edit your new service however you like.

You can also delete any service.

Similar:

  • How to Restore or Verify Default Services in Windows 7, 8, and 10
  • How to Identify Processes or Services on Your Computer
  • How to Add Services to Control Panel in Windows
  • How-To Customize Process Information Viewed in Task Manager
  • Automatic and Manual Trigger Start Explained

    comments powered by Disqus

  • Installing a service on Windows 7 requires administrative privileges, and it can be accomplished using the command prompt or the Services Manager.

    To install a service using the command prompt, you would need to open it as an Administrator and navigate to the directory where the service executable is located. Once there, you can use the «sc create» command to create a new service, specifying the service name, display name, and other parameters. For example, to install a service named «MyService«, the command would look like this:

    sc create MyService binPath= «C:\Path\To\Executable.exe» start= auto

    This would install the service with automatic startup and the specified executable path.

    Alternatively, you can use the Services Manager to create a new service. This can be accessed by opening the Start menu, typing «services.msc» and pressing Enter. From there, you can right-click on the «Services (Local)» node and choose «New Service«. This will open a dialog where you can enter the service name, description, executable path, and other details. Once you have filled these in, click OK to create the service.

    Once the service is installed, you can start and stop it using the Services Manager or the command prompt. You can also configure startup options and other settings for the service using the Services Manager.

    Video Tutorial:How do I manually add a Windows service?

    How do I run a service in Windows 7?

    To run a service in Windows 7, you will need to follow these steps:

    1. Click on the Windows button and type «services.msc» in the search box. Press Enter.

    2. The Services window will appear. Here, you will see a list of services running on your computer.

    3. Locate the service you want to run, and right-click on it.

    4. Select «Properties» from the context menu.

    5. In the Properties window, go to the «General» tab.

    6. Select «Automatic» from the «Startup type» drop-down menu. This will ensure that the service starts automatically every time you start your computer.

    7. Click on the «Start» button to run the service immediately.

    8. If the service needs any additional configuration, go to the other tabs in the Properties window and configure the settings as needed.

    9. Click «OK» to save your changes.

    Once you’ve completed these steps, your service should be up and running on your Windows 7 computer.

    Does Windows 7 have service packs?

    Yes, Microsoft released multiple service packs for Windows 7. Service packs are collections of updates, fixes, and enhancements based on user feedback and reported issues. These updates are compiled into a larger update package, which is then released by the manufacturer to enhance the overall experience of the product, addressing various security and stability issues over time. Windows 7 had three service packs in total, with the last update being released on April 9, 2013. While Windows 7 is no longer supported by Microsoft as of January 2020, it remains a very popular operating system, and users can still download and install the service packs if needed.

    To install Windows Update service on Windows 7, you can follow the steps given below:

    1. Click on the Start button and type «services.msc» without the quotes in the search bar.
    2. Hit Enter.
    3. The Services window should open. Scroll down and look for the «Windows Update» service.
    4. Right-click on this service and select «Properties» option from the context menu.
    5. In the Properties window, change the «Startup Type» to «Automatic» from the drop-down list.
    6. Then, click the «Apply» button and then click the «OK» button to save the changes.
    7. Finally, close the Services window.

    Once you have completed these steps, the Windows Update service will be installed and set to start automatically with Windows. You can then check for and install Windows updates by clicking on the Start button, selecting «All Programs«, and then clicking on «Windows Update«.

    How do I install window services?

    To install a Windows Service, you first need to create a project in Visual Studio. The project should be of type ‘Windows Service’ which will give you a template code to start with. You can then customize the code as per your requirements.

    Next, build the project and generate the executable file. You will then use the ‘sc’ command (Service Control Manager) to install the service. Open the command prompt as an administrator and navigate to the folder where the executable file is located. Then, run the following command:

    «`
    sc create «ServiceName» binPath= «C:\Path\to\executable.exe«
    «`


    Replace «ServiceName» with the name you want to give to your service and «C:\Path\to\executable.exe» with the full path to your executable file.

    Once the command is run, the service will be installed and registered with the Service Control Manager. You can then start, stop, or manage the service using the Services app in Windows or by using the ‘sc’ command.

    How to install Windows service without installer?

    When it comes to installing Windows services without an installer, a manual process can be used. First, you will need to create a Windows service executable (.exe) file and then install it using the command prompt.

    To create a service executable file, you can use Visual Studio to create a new project and select the Windows Service template. Then, add the necessary code for your service and build the project.

    Once you have the executable file, open the command prompt as an administrator and navigate to the directory where your .exe file is located. Then, use the «sc» command to create and install the service. For example, you can use the following command:

    sc create ServiceName binPath= «C:\Path\To\Your\Service.exe«

    Where «ServiceName» is the name of your service and «C:\Path\To\Your\Service.exe» is the full path to your service executable file.

    After running the command, your service will be created and installed on the system. You can then start, stop, and manage the service using the Windows Services Manager.

    It’s important to note that installing a Windows service manually can be more complicated and error-prone than using an installer. Therefore, this method should only be used if an installer is not an option or if you have specialized needs or requirements.

    Иногда может потребоваться взять исполняемый файл и зарегистрировать его в качестве службы Windows. Для этого есть несколько способов, я обычно пользуюсь двумя из них.

    Sc.exe

    Для создания и службы из командной строки можно использовать программу 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

    создание, изменение и удаление службы Windows

    PowerShell

    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

    В принципе PowerShell имеет примерно такой же функционал как и Sc.exe, разве что позволяет добавить описание. А вот для удаления служб в PS простого способа нет, придется воспользоваться вот такой конструкцией:

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

    Поэтому лично я предпочитаю использовать Sc.exe.

    Время на прочтение6 мин

    Количество просмотров85K

    Однажды вы задумаетесь, как превратить скрипт или приложение в Windows-службу. Скорее всего, задача окажется не такой уж тривиальной – приложению как минимум потребуется специальный интерфейс для получения команд от системы. А раз есть требования и ограничения, то есть и скрипты, и милые сердцу костылики для преодоления.

    Статья будет полезна тем, кто, как и я — «программист не настоящий».

    Зачем нужна служба, если есть назначенные задания

    В отличие от назначенных заданий служба работает постоянно, запускается при старте ПК и может управляться средствами Windows. А еще регулярно запускаемому скрипту могут понадобиться данные с предыдущего запуска, и может быть полезно получение данных из внешних источников — например, в случае TCP или Web сервера.

    Лично мне за последние пять лет приходилось создавать службу три с половиной раза:

    • Потребовалось создать сервис на fail2ban для Windows 2003., который работал с логами FileZilla и Apache, а при подозрении на брутфорс блокировал IP штатными средствами Windows — ipsec.
    • Аналог телнет-сервера для домашних версий Windows. Понадобилось выполнять команды на удаленных рабочих станциях, которые были под управлением Windows 7 Home. По сути, вторая попытка поиграть в службы.
    • Музыкальный проигрыватель для торгового зала под Windows. Задачу по ТЗ можно было решить при помощи mpd и пачки скриптов, но я решил — если уж делать скрипты, то почему бы и не «сваять» проигрыватель самому. За основу взял библиотеку BASS.dll.
    • Когда выбирали веб-сервер с поддержкой загрузки файлов под Windows, одним из вариантов был HFS. Сам по себе работать он не может, поэтому пришлось «запихивать» его в службу. В результате решение не понравилось, и просто установили «тему» Apaxy на web-сервере Apache.

    Для создания службы можно использовать взрослые языки программирования вроде C. Но если вы не хотите связываться с Visual Studio, то возьмите готовые утилиты. Существуют платные решения вроде FireDaemon Pro или AlwaysUp, но мы традиционно сосредоточимся на бесплатных.

    Способ первый. От Microsoft

    Этот уже немолодой механизм состоит из двух компонентов: утилиты instsrv.exe для установки сервиса и srvany.exe — процесса для запуска любых исполняемых файлов. Предположим, что мы создали веб-сервер на PowerShell при помощи модуля Polaris. Скрипт будет предельно прост:

    New-PolarisGetRoute -Path '/helloworld' -Scriptblock {
        $Response.Send('Hello World!')
    }
    
    Start-Polaris -Port 8080
    
    while($true) {
        Start-Sleep -Milliseconds 10
    }

    Работа так называемого «сервера».

    Теперь попробуем превратить скрипт в службу. Для этого скачаем Windows Resource Kit Tools, где будут наши утилиты. Начнем с того, что установим пустой сервис командой:

    instsrv WebServ C:\temp\rktools\srvany.exe
    

    Где WebServ — имя нашего нового сервиса. При необходимости через оснастку services.msc можно задать пользователя, под которым будет запускаться служба, и разрешить взаимодействие с рабочим столом.

    Теперь пропишем путь к нашему скрипту при помощи магии реестра. Параметры службы есть в разделе реестра HKLM\SYSTEM\CurrentControlSet\Services\WebServ. В нем нам нужно добавить новый раздел Parameters и создать там строковый параметр Application, указав в нем путь к исполняемому файлу. В случае скрипта PowerShell он будет выглядеть так:

    C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy Bypass -NoProfile -File C:\temp\Polaris\server.ps1
    

    Настроенная служба.

    Можно запустить и радоваться.

    Работающая служба.

    Однако у этого способа есть недостатки:

    • Утилиты старые, разработаны до изобретения PowerShell, UAC и прочих вещей.
    • Srvany не контролирует работу приложения. Даже если оно выпадет в ошибку, служба продолжит свое дело как ни в чем не бывало.
    • Придется донастраивать и копаться в реестре. Вы же помните, что копаться в реестре небезопасно?

    Поэтому перейдем к методу, частично лишенному этих проблем.

    Способ второй, почти взрослый

    Существует утилита под названием NSSM — Non-Sucking Service Manager, что можно перевести как не-плохой менеджер служб. В отличие от предыдущей, она поддерживается разработчиком, и исходный код опубликован на сайте. Помимо обычного способа, доступна и установка через пакетный менеджер Chocolately.

    Создать сервис можно из обычной командной строки, вооружившись документацией на сайте разработчика. Но мы воспользуемся PowerShell. Потому что можем, разумеется.

    $nssm = (Get-Command ./nssm).Source
    $serviceName = 'WebServ'
    $powershell = (Get-Command powershell).Source
    $scriptPath = 'C:\temp\Polaris\server.ps1'
    $arguments = '-ExecutionPolicy Bypass -NoProfile -File "{0}"' -f $scriptPath
    & $nssm install $serviceName $powershell $arguments
    & $nssm status $serviceName
    Start-Service $serviceName
    Get-Service $serviceName

    Установка через PowerShell.

    Для разнообразия проверим работу службы не браузером, а тоже через PowerShell командой Invoke-RestMethod.

    И вправду работает.

    В отличие от srvany, этот метод позволяет перезапускать приложение на старте, перенаправлять stdin и stdout и многое другое. В частности, если не хочется писать команды в командную строку, то достаточно запустить GUI и ввести необходимые параметры через удобный интерфейс.

    GUI запускается командой:

    nssm.exe install ServiceName

    Настроить можно даже приоритет и использование ядер процессора.

    Действительно, возможностей куда больше, чем у srvany и ряда других аналогов. Из минусов бросается в глаза недостаточный контроль над всем процессом.

    Налицо нехватка «жести». Поэтому я перейду к самому хардкорному методу из всех опробованных.

    Способ третий. AutoIT

    Поскольку я давний любитель этого скриптового языка, то не смог пройти мимо библиотеки под названием _Services_UDF v4. Она снабжена богатой документацией и примерами, поэтому под спойлером сразу приведу полный текст получившегося скрипта.

    Листинг скрипта

    Итак, попробуем «завернуть» в нее наш веб-сервис:

    #NoTrayIcon
    #RequireAdmin
    #Region
    #AutoIt3Wrapper_Version=Beta
    #AutoIt3Wrapper_UseUpx=n
    #AutoIt3Wrapper_Compile_Both=y
    #AutoIt3Wrapper_UseX64=y
    #EndRegion
    
    Dim $MainLog = @ScriptDir & "\test_service.log"
    
    #include <services.au3>
    #include <WindowsConstants.au3>
    
    $sServiceName="WebServ"
    
    If $cmdline[0] > 0 Then
        Switch $cmdline[1]
            Case "install", "-i", "/i"
                InstallService()
            Case "remove", "-u", "/u", "uninstall"
                RemoveService()
            Case Else
                ConsoleWrite(" - - - Help - - - " & @CRLF)
                ConsoleWrite("params : " & @CRLF)
                ConsoleWrite(" -i : install service" & @CRLF)
                ConsoleWrite(" -u : remove service" & @CRLF)
                ConsoleWrite(" - - - - - - - - " & @CRLF)
                Exit
        EndSwitch
    Else
        _Service_init($sServiceName)
        Exit
    EndIf
    
    Func _main($iArg, $sArgs)
    If Not _Service_ReportStatus($SERVICE_RUNNING, $NO_ERROR, 0) Then
        _Service_ReportStatus($SERVICE_STOPPED, _WinAPI_GetLastError(), 0)
        Exit
    EndIf
    
    $bServiceRunning = True
    $PID=Run("C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy Bypass -NoProfile -File C:\temp\Polaris\server.ps1")
    
    While $bServiceRunning
    _sleep(1000)
    WEnd
    ProcessClose($PID)
    
    _Service_ReportStatus($SERVICE_STOP_PENDING, $NO_ERROR, 1000)
    DllCallbackFree($tServiceMain)
    DllCallbackFree($tServiceCtrl)
    _Service_ReportStatus($SERVICE_STOPPED, $NO_ERROR, 0)
    DllClose($hAdvapi32_DLL)
    DllClose($hKernel32_DLL)
    EndFunc
    
    Func _Sleep($delay)
    Local $result = DllCall($hKernel32_DLL, "none", "Sleep", "dword", $delay)
    EndFunc
    
    Func InstallService()
        #RequireAdmin
        Local $bDebug = True
        If $cmdline[0] > 1 Then
            $sServiceName = $cmdline[2]
        EndIf
        If $bDebug Then ConsoleWrite("InstallService("&$sServiceName &"): Installing service, please wait")
        _Service_Create($sServiceName, $sServiceName, $SERVICE_WIN32_OWN_PROCESS, $SERVICE_AUTO_START, $SERVICE_ERROR_SEVERE, '"' & @ScriptFullPath & '"');,"",False,"","NT AUTHORITY\NetworkService")
        If @error Then
            Msgbox("","","InstallService(): Problem installing service, Error number is " & @error & @CRLF & " message : " & _WinAPI_GetLastErrorMessage())
        Else
            If $bDebug Then ConsoleWrite("InstallService(): Installation of service successful")
        EndIf
        Exit
    EndFunc
    
    Func RemoveService()
        _Service_Stop($sServiceName)
        _Service_Delete($sServiceName)
        If Not @error Then
        EndIf
        Exit
    EndFunc
    
    Func _exit()
        _Service_ReportStatus($SERVICE_STOPPED, $NO_ERROR, 0);
    EndFunc
    
    Func StopTimer()
        _Service_ReportStatus($SERVICE_STOP_PENDING, $NO_ERROR, $iServiceCounter)
        $iServiceCounter += -100
    EndFunc
    
    Func _Stopping()
        _Service_ReportStatus($SERVICE_STOP_PENDING, $NO_ERROR, 3000)
     EndFunc

    Разберу подробнее момент запуска приложения. Он начинается после операции $bServiceRunning = True и превращается в, казалось бы, бесконечный цикл. На самом деле этот процесс прервется, как только служба получит сигнал о завершении — будь то выход из системы или остановка вручную.

    Поскольку программа для скрипта является внешней (powershell.exe), то после выхода из цикла нам нужно закончить ее работу с помощью ProcessClose.

    Для этого скрипт необходимо скомпилировать в .exe, а затем установить службу, запустив exe с ключом -i.

    Оно работает!

    Разумеется, этот способ не самый удобный, и все дополнительные возможности придется реализовывать самостоятельно, будь то повторный запуск приложения при сбое или ротация логов. Но зато он дает полный контроль над происходящим. Да и сделать в итоге можно куда больше — от уведомления в Telegram о сбое службы до IPC-взаимодействия с другими программами. И вдобавок — на скриптовом языке, без установки и изучения Visual Studio.

    Расскажите, а вам приходилось превращать скрипты и приложения в службы?

    Иногда требуется исполняемый файл зарегистрировать в качестве службы 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» и посмотрим результат.

    Services

    Изменять параметры уже созданной службы можно командой Sc config. Например, не понравилось отображаемое имя службы:
    Sc config MyService DisplayName=″My Service″
    Или полностью удалить службу:
    Sc delete MyService

    Sc delete MyService

    Понравилась статья? Поделить с друзьями:
    0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии
  • Stop code inaccessible boot device windows 10
  • Как переключиться на дискретную видеокарту в ноутбуке amd windows 10
  • Windows стандартный размер кластера
  • Как поменять букву сетевого диска в windows 10
  • Как установить windows 10 через руфус