- Практическое руководство. Установка и удаление служб Windows How to: Install and uninstall Windows services
- Установка с помощью программы InstallUtil.exe Install using InstallUtil.exe utility
- Удаление с помощью служебной программы InstallUtil.exe Uninstall using InstallUtil.exe utility
- Установка с помощью PowerShell Install using PowerShell
- Удаление с помощью PowerShell Uninstall using PowerShell
- Запуск и настройка службы Windows из командной строки
- Управление системными службами через командную строку
- Команды SC — настройка, запуск и останов системный служб Windows
- Примеры работы с командами SC
Практическое руководство. Установка и удаление служб Windows How to: Install and uninstall Windows services
Если вы разрабатываете службу Windows с помощью .NET Framework, вы можете быстро установить приложение службы с помощью служебной программы командной строки InstallUtil.exe или PowerShell. If you’re developing a Windows service with the .NET Framework, you can quickly install your service app by using the InstallUtil.exe command-line utility or PowerShell. Если вы являетесь разработчиком и хотите создать службу Windows, которую пользователи могут устанавливать и удалять, можно использовать набор инструментов WiX или коммерческие средства, такие как Advanced Installer, InstallShield или другие. Developers who want to release a Windows service that users can install and uninstall can use the free WiX Toolset or commercial tools like Advanced Installer, InstallShield, or others. См. сведения о создании пакета установщика (классическое приложение Windows). For more information, see Create an installer package (Windows desktop).
Если вы хотите удалить службу на своем компьютере, не выполняйте процедуру, описанную в этой статье. If you want to uninstall a service from your computer, don’t follow the steps in this article. Вместо этого определите, какая программа (или программный пакет) установила эту службу, а затем выберите Приложения в параметрах, чтобы удалить эту программу. Instead, find out which program or software package installed the service, and then choose Apps in Settings to uninstall that program. Следует отметить, что многие службы являются составной частью ОС Windows. Если их удалить, это может привести к нестабильной работе системы. Note that many services are integral parts of Windows; if you remove them, you might cause system instability.
Чтобы использовать процедуру, описанную в этой статье, сначала необходимо добавить установщик службы в свою службу Windows. To use the steps in this article, you first need to add a service installer to your Windows service. Дополнительные сведения см. в разделе Пошаговое руководство: создание диспетчера служб Windows. For more information, see Walkthrough: Creating a Windows service app.
Проекты служб Windows нельзя запускать непосредственно из среды разработки Visual Studio путем нажатия клавиши F5. You can’t run Windows service projects directly from the Visual Studio development environment by pressing F5. Перед запуском проекта необходимо установить службу в проекте. Before you can run the project, you must install the service in the project.
Запустите обозреватель сервера и убедитесь, что служба установлена или удалена. You can use Server Explorer to verify that you’ve installed or uninstalled your service.
Установка с помощью программы InstallUtil.exe Install using InstallUtil.exe utility
В меню Пуск выберите каталог Visual Studio и затем Командная строка разработчика для VS . From the Start menu, select the Visual Studio directory, then select Developer Command Prompt for VS .
Появится командная строка разработчика для Visual Studio. The Developer Command Prompt for Visual Studio appears.
Откройте каталог, где находится скомпилированный исполняемый файл вашего проекта. Access the directory where your project’s compiled executable file is located.
Запустите InstallUtil.exe из командной строки, указав исполняемый файл проекта в качестве параметра: Run InstallUtil.exe from the command prompt with your project’s executable as a parameter:
Если вы используете командную строку разработчика для Visual Studio, системный путь должен указывать на файл InstallUtil.exe. If you’re using the Developer Command Prompt for Visual Studio, InstallUtil.exe should be on the system path. Если это не так, можно добавить его в путь или использовать полный путь для его вызова. Otherwise, you can add it to the path, or use the fully qualified path to invoke it. Этот инструмент устанавливается вместе с платформой .NET Framework в папку %WINDIR%\Microsoft.NET\Framework[64]\ . This tool is installed with the .NET Framework in %WINDIR%\Microsoft.NET\Framework[64]\ .
Пример: For example:
- Для 32-разрядной версии .NET Framework 4 или 4.5 и более поздних версий: если каталог установки Windows — C:\Windows, по умолчанию используется путь C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe. For the 32-bit version of the .NET Framework 4 or 4.5 and later, if your Windows installation directory is C:\Windows, the default path is C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe.
- Для 64-разрядной версии .NET Framework 4 или 4.5 и более поздних версий: по умолчанию используется путь C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe. For the 64-bit version of the .NET Framework 4 or 4.5 and later, the default path is C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe.
Удаление с помощью служебной программы InstallUtil.exe Uninstall using InstallUtil.exe utility
В меню Пуск выберите каталог Visual Studio и затем Командная строка разработчика для VS . From the Start menu, select the Visual Studio directory, then select Developer Command Prompt for VS .
Появится командная строка разработчика для Visual Studio. The Developer Command Prompt for Visual Studio appears.
Запустите InstallUtil.exe из командной строки, указав выходные данные проекта в качестве параметра: Run InstallUtil.exe from the command prompt with your project’s output as a parameter:
После удаления исполняемого файла для службы сама служба может по-прежнему присутствовать в реестре. After the executable for a service is deleted, the service might still be present in the registry. В этом случае удалить запись службы из реестра можно с помощью команды sc delete. If that’s the case, use the command sc delete to remove the entry for the service from the registry.
Установка с помощью PowerShell Install using PowerShell
В меню Пуск выберите Каталог Windows PowerShell и Windows PowerShell. From the Start menu, select the Windows PowerShell directory, then select Windows PowerShell.
Откройте каталог, где находится скомпилированный исполняемый файл вашего проекта. Access the directory where your project’s compiled executable file is located.
Выполните командлет New-Service, указав в качестве параметров выходные данные проекта и имя службы. Run the New-Service cmdlet with the with your project’s output and a service name as parameters:
Удаление с помощью PowerShell Uninstall using PowerShell
В меню Пуск выберите Каталог Windows PowerShell и Windows PowerShell. From the Start menu, select the Windows PowerShell directory, then select Windows PowerShell.
Выполните командлет Remove-Service, указав в качестве параметра имя службы. Run the Remove-Service cmdlet with the name of your service as parameter:
После удаления исполняемого файла для службы сама служба может по-прежнему присутствовать в реестре. After the executable for a service is deleted, the service might still be present in the registry. В этом случае удалить запись службы из реестра можно с помощью команды sc delete. If that’s the case, use the command sc delete to remove the entry for the service from the registry.
Запуск и настройка службы Windows из командной строки
Несмотря на свой примитивный вид и скромные размеры, командная строка предоставляет множество вариаций на тему «А что если. произвести запуск службы из командной строки». Фактически, простому обывателю она понадобится в очень редких случаях, если совсем не понадобится, работа со службами (их запуск или остановка) и то реже (хотя тут скорее уместна команда net stop).
Но, есть множество талантливой молодежи, или просто проницательных людей, которые с огромным удовольствие захотят засунуть свой нос в вашу систему. Конечно, большинство простых обывателей не будет извращаться над собой используя Windows NT или Windows 2000, да и Семерка все чаще наступает на горло «простенькому» ХР, но, командная_строка в мире операционных систем, это все ровно, что таблица умножения в мире финансов.
В Панели управление/Администрирование находится оснастка Службы, которая позволяет управлять рядом сервисов. Двойной щелчок по любой из них позволяет просмотреть ряд параметров:
Вкладка Общие показывает состояние, тип запуска, описание, исполняемый файл и другую информацию. Использование CMD позволяет получить аналогичную информацию, а также управлять состоянием и запуском служб, используя командную строку:
Sc start Имя_Службы – производится запуск службы из командной строки
Sc pause Имя_Службы – приостановка сервиса
Sc continue Имя_Службы – восстановление работы приостановленного сервиса
Sc stop Имя_Службы – полная остановка
Эти команды можно применять и на удаленных машинах. Например, что бы запустить УдаленныйРеестр на машине с адресом 192.168.1.6., надо прописать (вместо IP можно и имя машины прописать, например Mailer):
Хотя, запустить службу из командной строки можно и при использовании утилиту net start, или net stop соответственно (net stop RemoteRegistry)
Что бы настроить тип запуска применяется команда sc config (хотя ее возможности этим не ограничиваются). Синтаксис следующий:
Флаг может принимать три значения:
тут мы отключили RemoteRegistry на удаленной машине. Стоит помнить, что отключение сервиса его не останавливает, после перезагрузки он может вновь запустится.
На вкладке Вход в систему видно, что сервис можно запускать или от имени системной учетной записи, или от имени любой другой учетной записи. Так, что бы запустить службу из командной строки под тои или иной учетной записью, используется синтаксис:
В данном примере УдаленныйРеестр грузится под ЛокальнойСлужбой (NT AUTHORITYLocalService), а можно и под системной учетной записью (LocalSystem), но лучше этого не делать:
Если использовать флаг type= interact, то это укажет, что сервис может взаимодействовать с рабочим столом Windows:
тут флаг type= own говорит, что cлужбa выполняется в собственном процессе, если же работа происходит в общем процессе, то применятся флаг type= share. Например:
Используя команду sc qc ИмяСлужбы можно детально просмотреть информацию о ней, в том числе и тип запуска, например:
TYPE : 20 WIN32_SHARE_PROCESS (общий процесс)
или
TYPE : 20 WIN32_OWN_PROCESS (собственный процесс)
Может возникнуть необходимость сделать запуск определенной службы, используя командную строку, не от имени системы, а от имени пользователя, в таком случае надо указывать имя учетной записи и пароль, например:
sс config w3svc obj = User password = UserPass — тут w3svc настроена на запуск от имени пользователя User с паролем UserPass. Общий же синтаксис такой:
sс config ИмяCлужбы obj = [Домен]Пользователь password= пароль — тут Домен — имя домена, где находится учетная запись (не является обязательным). В случае, если системная cлужбa была прежде сконфигурирована под локальную систему, то при перенастройке под учетную запись домена надо использовать флаг type= own:
Операционная система Windows содержит множество лазеек, которые позволяют в нее проникнуть (в том числе и сервер сценариев Windows Script Host), обходя стандартные правила. Не последнюю роль тут играют и системные службы. Например, утилита PsExec позволяет войти в удаленную систему или же запустить приложение от имени Локальной Системы. В процессе создается служба которая работает на обеих машина, она то и оперирует всем процессом связи. Однако, гордые обладатели Семерки, или даже ХР (если были установлены нужные обновления), могут сильно разочароваться. Хотя запуск службы psexecsvc можно произвести и непосредственно из командной строки, система ее просто игнорирует (или запрещает выполнять ее функции). Конечно, если есть голова, то можно создать аналог Psexec (тем более, что алгоритм работы известен), авось прокатит, но, если бы все было так, как в книге пишут.
Спасибо за внимание. Автор блога Владимир Баталий
Управление системными службами через командную строку
Службы обеспечивают ключевые функции рабочих станций и серверов. Для управления системными службами на локальных и удаленных системах используется команда контроллера служб (service controller command) SC, имеющая набор подкоманд, здесь описывается лишь их некоторая часть.
Для удобства пользования в командной строке используются сокращенные названия служб Windows (например, Spooler — диспетчер очереди печати, Dhcp — DHCP-клиент, W32Time — Служба времени Windows и т.п., см таблицу по ссылке).
Команды SC — настройка, запуск и останов системный служб Windows
- SC config — настройка учетных записей регистрации и запуска служб;
- SC query — вывод списка всех служб, настроенных на компьютере;
- SC qc отображение конфигурации определенной службы;
- SC start — запуск служб;
- SC stop — останов служб;
- SC pause — приостановка работы служб;
- SC continue — возобновление работы служб;
- SC failure — задание действий, выполняемых при сбое службы;
- SC qfailure — просмотр действий, выполняемых при сбое службы.
Примеры работы с командами SC
Во всех командах можно указывать имя удаленного компьютера, со службами которого вы хотите работать. Для этого вставьте UNC-имя (например, \\Roza) или IP-адрес (например, 192.168.1.1) компьютера перед используемой подкомандой. Вот синтаксис: sc ИмяСервера Подкоманда.
Пример команды sc на компьютере с Windows 10:
- sc \\Roza query Spooler
Чтобы получить список всех служб, настроенных в системе, введите в командной строке команду: sc query type=service state=all или sc ИмяСервера query type=service state=all где ИмяСервера — UNC-имя или IP-адрес удаленного компьютера.