Как скопировать службу windows

Обновлено: 07.07.2024

Инструкции по резервному копированию и восстановлению отдельных файлов на компьютере с Windows:

Инструкции по резервному копированию и восстановлению в Windows 10:

Перемещение назад

Существует несколько способов сделать резервную копию системы компьютера.

Выберите кнопку Начните, а затем выберите Панель управления> система и обслуживание >резервное копирование и восстановление.

Выполните одно из следующих действий:

Если вы ни разу не использовали программу архивации данных или недавно обновили версию Windows, выберите Настроить резервное копирование, а затем выполните действия, предлагаемые мастером.

Если вы уже создавали резервную копию, то можете дождаться запланированного резервного копирования или вручную создать резервную копию, выбрав Создать резервную копию.

Если вы ранее создавали резервную копию, но хотите создать полную резервную копию, а не обновлять старую, выберите Создать, Полная резервная копия, а затем выполните действия, предлагаемые мастером.

Примечание: Не записывайте резервную копию файлов на диск, на который установлена ОС Windows. Например, не создавайте резервную копию файлов в разделе восстановления. Всегда храните носители, используемые для резервных копий (внешние жесткие диски, DVD или компакт-диски) в безопасном месте, чтобы не допустить несанкционированного доступа к вашим файлам. Рекомендуется хранить носители в защищенном от огня месте отдельно от компьютера. Кроме того, возможно, вам потребуется зашифровать хранящиеся в резервных копиях данные.

Создание образа системы

Образы системы содержат все данные, хранящиеся на вашем компьютере, по состоянию на определенный момент времени.

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

Примечание: Чтобы создать образ системы на основе диска, этот диск должен быть отформатирован для файловой системы NTFS. Если вы хотите сохранить образ системы на жестком диске или на USB-устройстве флэш-памяти, то они должны быть отформатированы для файловой системы NTFS.

Хранение разных версий образов системы

Можно хранить несколько версий системных изображений. По мере исчерпания места на внутренних и внешних жестких дисках самые старые образы системы будут удаляться. Чтобы сэкономить место на диске, удалите старые образы системы.

При сохранении системных изображений в сетевом расположении можно сохранить только самые последние системные изображения для каждого компьютера. Образы системы сохраняются в формате "диск\WindowsImageBackup\имя_компьютера\". Если у вас уже есть системное изображение для компьютера и вы создаете новое для того же компьютера, новое системное изображение переописет старое.

Если вы хотите сохранить старое системное изображение, скопируйте его в другое место, прежде чем создавать новое системное изображение, вы можете сделать следующее:

Перейдите в расположение образа системы.

Скопируйте папку WindowsImageBackup в новое расположение.

"Создание точки восстановления"

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

Вот как можно создать точку восстановления.

Щелкните кнопку Пуск правой кнопкой мыши, затем выберите Панель управления > Система и ее обслуживание > Система.

На расположенной слева панели выберите пункт Защита системы.

Откройте вкладку Защита системы, а затем выберите Создать.

В диалоговом окне Защиты системы введите описание, а затем выберите Создать.

Восстановление

Щелкните кнопку Пуск правой кнопкой мыши, затем выберите Панель управления > Система и ее обслуживание > Архивация и восстановление.

Выполните одно из следующих действий:

Чтобы восстановить файлы, выберите Восстановить мои файлы.

Чтобы восстановить файлы всех пользователей, выберите Восстановить файлы всех пользователей.

Выполните одно из следующих действий:

Чтобы просмотреть содержимое резервной копии, выберите Обзор файлов или Обзор папок. При просмотре папок содержащиеся в них отдельные файлы не отображаются. Чтобы просмотреть отдельные файлы, используйте команду Обзор файлов.

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

Совет: Если вы выполняете поиск файлов или папок, сопоставленных с конкретной учетной записью пользователя, то вы можете улучшить результаты поиска, указав расположение файла или папки в поле Поиск. Например, чтобы выполнить поиск всех JPG-файлов, сохраненных в резервной копии, в поле Поиск введите JPG. Чтобы выполнить поиск JPG-файлов, сопоставленных только с пользователем Oleg, в поле Поиск введите C:\Пользователи\Oleg\JPG. Используйте подстановочные знаки, например *.jpg для поиска всех JPG-файлов, сохраненных в резервной копии.

Восстановление данных из резервной копии, созданной на другом компьютере

Вы можете восстановить файлы из резервной копии, которая создана на другом компьютере, работающем под управлением Windows Vista или Windows 7.

Поиск файлов, восстановленных из резервной копии, которая была создана на другом компьютере

При восстановлении файлов из резервной копии, созданной на другом компьютере, они будут восстановлены в папку с именем пользователя, которое было использовано при создании резервной копии. Если это имя пользователя отличается от текущего имени пользователя, вам потребуется перейти в папку, в которую восстановлены файлы. Например, если при архивации использовалось имя пользователя Inna, а при восстановлении резервной копии на компьютере используется имя пользователя InnaO, то восстановленные файлы будут помещены в папку с именем Inna.

Поиск восстановленных файлов:

Дважды щелкните значок диска, на котором были сохранены файлы, например диска C:\.

Дважды щелкните папку Пользователи. Вы увидите папку для каждой учетной записи пользователя.

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

Восстановление файлов из резервной копии файлов после восстановления компьютера из резервной копии образа системы

После восстановления компьютера из резервной копии системных изображений могут появиться более новые версии некоторых файлов в резервной копии, которую вы хотите восстановить.

Чтобы восстановить файлы из резервной копии файла, созданной после создания системной резервной копии образа, выполните указанные здесь действия.

В поле Период архивации выберите диапазон дат для резервной копии, содержащей файлы, которые вы хотите восстановить, а затем выполните действия, предлагаемые мастером.

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

Sc.exe

При создании службы с помощью SC нет необходимости вручную создавать записи в реестре и затем перезагружать компьютер, чтобы обеспечить обновление базы данных диспетчером служб. Также SC позволяет указать имя удаленного компьютера, что дает возможность управлять службами как на локальном, так и на удаленном компьютере.

Для создания нового сервиса запускаем команду Sc create . Она создает запись службы в реестре и в базе данных диспетчера служб. Sc create имеет следующий синтаксис:

sc create [ServiceName] [binPath= ] <параметр1= > <параметр2= >

Для примера создадим службу 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


Однажды вы задумаетесь, как превратить скрипт или приложение в 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, но мы традиционно сосредоточимся на бесплатных.

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



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

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

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

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



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

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



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

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

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

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

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

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



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

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



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

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

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



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

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

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

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

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

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

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

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



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

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

Запуск приложения как службы Windows

Службы Windows - запущенные в фоне приложения, которые работают независимо от пользователя компьютера, и управляются непосредственно самой операционной системой. По умолчанию, службами являются строго определенные приложения, однако, ничто не мешает пользователю создать их самому. Выполнить данную задачу можно несколькими способами - с использованием стандартных средств Windows, либо с использованием сторонней программы NSSM.

Удаляется же служба еще проще:

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

NSSM - программа, предназначенная для создания служб из исполняемых файлов Windows, в том числе и из графических утилит, что ставит её на уровень выше средств от Microsoft. С её помощью можно запускать большинство приложений, даже которые рассчитаны на взаимодействие с пользователем.

В архиве для скачивания можно найти версию для 64-битной версии Windows (папка win64), для 32-битной (папка win32) и исходные коды приложения (папка src). Выбираем нужное приложение под разрядность своей системы, копируем его в удобное для вас место на жестком диске. Никакая установка приложения не требуется.

  1. Предположим, нужно создать службу для веб-сервера nginx под Windows. Для этого, запускаем командную строку с правами администратора, и переходим в директорию с распакованным исполняемым файлом nssm.exe.
  2. Затем выполняем команду, начинающую установку службы:
  3. Откроется окно с настройками создаваемой службы.

    На самой первой вкладке "Application", в строке "Path" задается путь к исполняемому файлу, "Startup Directory" - рабочая директория, а "Arguments" - параметры запуска. В самом низу расположена строка "Service Name", где задается имя создаваемого сервиса.

    На вкладке "Details" можно задать имя, под которым будет отображаться создаваемая служба в списке служб, а так же описание службы, которое будет отображаться там же. В выпадающем списке "Startup Type" можно выбрать тип запуска службы.

    Вкладка "Log on" позволяет указать пользователя, под которым будет запускаться служба.Заполним все нужные поля и выбрав нужные настройки, остается только нажать кнопку "Install service", для установки службы.
  4. После нажатия кнопки "Install service", служба будет создана, но при этом запустить её нужно будет вручную (либо перезагрузить компьютер, чтобы служба с параметром запуска "Auto" запустилась при его запуске).

Читайте также: