Разрешить взаимодействие с рабочим столом что это
Перейти к содержимому

Разрешить взаимодействие с рабочим столом что это

  • автор:

Настройка типа запуска службы

Службы часто запускаются с параметрами по умолчанию. Например, при запуске служба может автоматически отключаться. Оснастку «Службы» можно использовать для изменения параметров службы по умолчанию. Это полезно при устранении неполадок в работе службы, или если необходимо изменить учетную запись безопасности, с которой работает служба.

Необходимое требование для выполнения этой процедуры – это членство в группе Операторы учета или в группах Администраторы домена, Администраторы предприятия. Подробности см. далее, в разделе «Прочие вопросы».

Настройка типа запуска службы

Нажмите кнопку Пуск, щелкните в поле Начать поиск, введите services.msc и нажмите клавишу ВВОД.

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

В области сведений дважды щелкните службу, которую требуется настроить, и щелкните Свойства.

На вкладке Общие в разделе Тип запуска выберите Автоматический режим, Вручную, Отключено или Автоматически (отложенный запуск).

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

    Чтобы указать, что служба должна использовать учетную запись «Локальная система», щелкните С системной учетной записью.

Введите пароль учетной записи в полях Пароль и Подтверждение, затем щелкните ОК. Если выбрана учетная запись «Локальная служба» или «Сетевая служба», не вводите пароль.

Чтобы настроить тип запуска службы с помощью командной строки
  • Службами также можно управлять с помощью команды sc config. Для получения дополнительных сведений о доступных параметрах откройте окно командной строки и введите sc config /?. Подробное описание параметров командной строки и примеры см. в справочнике по командной строке на странице
  • https://go.microsoft.com/fwlink/?linkid=53528 .

Дополнительная информация
  • Для выполнения этой процедуры необходимо быть членом группы «Операторы учета», «Администраторы домена» или «Администраторы предприятия» либо получить соответствующие полномочия путем делегирования. При этом по соображениям безопасности рекомендуется использовать команду Run as.

Как запустить приложение в виде службы Windows

Можно ли запустить клиентское приложение в качестве службы? В одной из статей я описывал способы создания службы Windows штатными средствами ОС. Однако не каждое консольное приложение сможет запуститься как служба, а программы с графическим интерфейсом в принципе не умеют работать подобным образом. Но возможность запустить приложение как службу все же есть, и поможет нам в этом программа с оригинальным названием Non-Sucking Service Manager.

NSSM представляет из себя свободное программное обеспечение с открытым кодом и поддерживает все операционные системы Microsoft, начиная с Windows 2000 и заканчивая Windows 8. NSSM не требует установки, достаточно его загрузить и распаковать. В дистрибутив входят версии для 32- и 64-разрядных ОС. Взять программу можно с сайта nssm.cc, на данный момент последняя стабильная версия 2.21.1, которую я и буду использовать.

Для демонстрации возможностей NSSM попробуем запустить Блокнот Windows в качестве службы на Windows 8.1.

Создание службы

Для создания службы с именем notepad запускаем командную консоль, переходим в папку с распакованным NSSM (для 64-разрядной Windows) и вводим команду nssm install notepad , которая открывает окно графического инсталлятора NSSM. Чтобы создать службу, достаточно в поле Path указать путь к исполняемому файлу и нажать кнопку «Install service». Дополнительно в поле Options можно указать ключи, необходимые для запуска службы.

запуск NSSM

Также на этапе создания новой службы можно указать некоторые дополнительные параметры.

На вкладке «Shutdown» перечислены методы остановки и таймауты, используемые при штатном завершении работы или аварийной остановке приложения. Когда NSSM получает команду остановки (напр. при завершении работы приложения), то он пытается остановить контролируемое приложение штатным образом. Если же приложение не отвечает, то NSSM может принудительно завершить все процессы и подпроцессы этого приложения.

Всего есть четыре этапа завершения работы приложения, и по умолчанию они будет использоваться в таком порядке:

• На первом этапе NSSM пытается сгенерировать и отправить событие Ctrl+C. Этот способ хорошо работает для консольных приложений или скриптов, но не применим для графических приложений;
• Затем NSSM определяет все окна, созданные приложением, и посылает им сообщение WM_CLOSE, инициирующее выход из приложения;
• Третьим этапом NSSM вычисляет все потоки, созданные приложением, и отправляет им сообщение WM_QUIT, которое будет получено если приложение имеет очередь сообщений потока;
• И в качестве последнего средства NSSM может вызвать метод TerminateProcess(), принудительно завершив работу приложения.

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

настройки выключения службы в NSSM

По умолчанию при падении службы NSSM пытается рестартовать ее. На вкладке «Exit actions» можно изменить автоматическое действие при нештатном завершении работы приложения, а также выставить задержку перед автоматическим перезапуском приложения.

настройки выхода для службы в NSSM

На вкладке «Input/Output (I/O)» можно задать перенаправление ввода\вывода приложения в указанный файл.

вкладка I/O в NSSM

На вкладке «Environment» можно задать для службы новые переменные окружения, или переопределить существующие.

вкладка Environment в NSSM

Также можно не пользоваться графической оболочкой и сразу создать службу в консоли такой командой:

nssm install notepad ″C:\Windows\system32\notepad.exe″

Управление службой

После создания службы с помощью NSSM зайдем в оснастку Services и найдем службу notepad. Как видите, с виду она ничем не отличается от остальных служб, мы также можем ее запустить, остановить или изменить режим запуска. Однако обратите внимание, что в качестве исполняемого файла указан nssm.exe.

свойства службы

А если зайти в Task Manager, то мы увидим следующую картину: в качестве основного (родительского) процесса запущен NSSM, служба notepad запущена как его дочерний процесс, и уже в этом дочернем процессе запущено приложение Блокнот.

служба NSSM в диспетчере задач

Удаление службы

Для удаления службы вводим команду nssm remove notepad и подтверждаем ее удаление. А введя команду nssm remove notepad confirm , можно обойтись и без подтверждения.

удаление службы в NSSM

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

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

Для того, чтобы запустить службу в интерактивном режиме, надо в оснастке Службы открыть ее свойства и на вкладке «Вход в систему» отметить чекбокс «Разрешить взаимодействие с рабочим столом».

разрешаем службе взаимодействие с рабочим столом

А дальше начинаются чудеса �� Cлужба, запущенная в интерактивном режиме, открывается в изолированном сеансе (session 0). Попасть в этот сеанс можно только при помощи Службы обнаружения интерактивных служб (ui0detect), которая отслеживает запуск интерактивных служб на компьютере и выдает оповещение. В Windows 7\Server 2008 эта служба активна по умолчанию, а в Windows 8\Server 2012 она отключена и не отображается в графической оснастке Службы (по крайней мере я ее там не нашел). Более того, если вы все же найдете эту таинственную службу и попробуете ее запустить, то получите сообщение об ошибке.

А дело в том, что для ее запуска необходимо разрешить запуск интерактивных служб на компьютере. Поэтому открываем редактор реестра, находим в разделе HKLM\System\CurrentControlSet\Control\Windows параметр типа DWORD с именем NoInteractiveServices и ставим его значение в 0.

разрешаем запуск интерактивных служб

После чего открываем консоль PowerShell и стартуем службу обнаружения командой:

Start-Service -Name ui0detect

включаем службу обнаружения

Убедившись что служба обнаружения запущена, рестартуем службу notepad, и получаем вот такое окошко. Выбираем пункт «Посмотреть сообщение»

окно обнаружения запуска интерактивной службы

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

нулевой сеанс

Такое вот интересное решение для запуска приложений в виде служб Windows. Не самое красивое, но вполне соответствующее своему названию ��

Исправлено: служба не запускалась из-за ошибки входа

что делать, если Windows 10 не может найти сеть Wi-Fi

Когда вы страдаете от того, что служба не запускается из-за ошибки входа в систему, особенно при перезапуске сервера Windows, проблема обычно связана с изменением пароля для профиля, используемого агентом SQL Server .

Однако иногда пароль может оставаться прежним, и вы уверены, что не внесли никаких изменений.

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

Выше может произойти из-за:

  • Смена пароля для учетной записи, с которой служба настроена для входа
  • Данные пароля повреждены (в реестре)
  • Право на вход в систему в качестве службы было отменено для указанной учетной записи пользователя

Не нужно беспокоиться об этом, поскольку у нас есть только правильные решения для решения проблем, при которых служба не запускалась из-за ошибки входа в систему, ознакомьтесь с приведенными ниже решениями.

Как исправить сервис не запускался из-за ошибки входа в систему

  1. Настройте службу для использования встроенной системной учетной записи
  2. Измените пароль для указанной учетной записи пользователя, чтобы он соответствовал текущему паролю для того же пользователя.
  3. Восстановить право пользователя на вход в систему как сервис

Решение 1. Настройте службу на использование встроенной системной учетной записи.

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

  1. Нажмите клавишу Windows + R, чтобы открыть командную строку « Запуск с повышенными правами».
  2. Введите services.msc и нажмите Enter.
  3. Найдите службу идентификации приложений , щелкните ее правой кнопкой мыши и откройте Свойства .
  4. Нажмите вкладку Вход в систему .
  5. Нажмите Локальная системная учетная запись
  6. Не устанавливайте флажок Разрешить взаимодействие с рабочим столом
  7. Нажмите Применить
  8. Нажмите вкладку Общие
  9. Нажмите Пуск, чтобы перезапустить службу
  10. Закройте инструмент Services.

Примечание. При попытке открыть свойства службы с помощью средства «Службы» на панели управления компьютер может перестать отвечать на запросы и получить сообщение об ошибке: «Сервер RPC недоступен .

Это может произойти, если служба RPC не запущена из-за сбоя входа в систему со службой или службы зависимостей, поскольку некоторым приходится ждать, пока их службы зависимостей не запустятся, прежде чем они запустятся.

  • ТАКЖЕ ЧИТАЙТЕ: экран входа в систему Windows 10 медленный, застрял, заморожен [FIX]

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

Вот как настроить пароль для указанной учетной записи пользователя в соответствии с текущим паролем для этого пользователя:

  1. Снова перейдите к Сервисам, следуя инструкциям предыдущего решения.
  2. В поле поиска введите Администрирование и нажмите на него
  3. Нажмите Услуги
  4. Щелкните правой кнопкой мыши по нужному сервису и выберите «Свойства».
  5. Нажмите вкладку Вход в систему
  6. Измените пароль, затем нажмите Применить
  7. Нажмите вкладку Общие
  8. Нажмите Пуск, чтобы перезапустить службу
  9. Нажмите OK и закройте инструмент Services

Решение 3. Восстановите право пользователя на вход в систему в качестве службы

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

Как восстановить права пользователя на контроллере домена

Вот как это сделать, если пользователь находится в домене Active Directory:

служба не запустилась из-за ошибки входа

  1. Щелкните правой кнопкой мыши Пуск
  2. Нажмите Панель управления
  3. Введите Административные инструменты и выберите его
  4. Нажмите Active Directory — пользователии компьютеры.
  5. Щелкните правой кнопкой мыши организационную единицу, в которой предоставлено право пользователя на вход в систему в качестве службы (по умолчанию организационная единица контроллеров домена)
  6. Щелкните правой кнопкой мыши нужный контейнер, затем выберите « Свойства».
  7. Перейти на вкладку групповой политики
  8. Нажмите Политика контроллеров домена по умолчанию
  9. Нажмите Редактировать, чтобы запустить диспетчер групповой политики.
  10. Развернуть Конфигурация компьютера
  11. Развернуть настройки Windows
  12. Разверните Настройки безопасности .
  13. Развернуть Локальные политики
  14. Нажмите Назначение прав пользователя.
  15. Щелкните правой кнопкой мыши Вход в качестве службы на правой панели.
  16. щелчок Добавить пользователя или группу .
  17. Введите имя, которое вы хотите добавить в политику, в поле Имена пользователей и групп
  18. Нажмите ОК .
  19. Выход из диспетчера групповой политики
  20. Закрыть свойства групповой политики,
  21. Выход из оснастки «Active Directory — пользователи и компьютеры» консоли управления (MMC)

Как восстановить права пользователя на рядовом сервере (автономно)

Вот как это сделать, если пользователь является участником автономного рядового сервера:

  1. Запустите оснастку MMC «Локальные параметры безопасности».
  2. Разверните Локальные политики.
  3. Нажмите Назначение прав пользователя .
  4. Щелкните правой кнопкой мыши Вход в качестве службына правой панели.
  5. НажмитеДобавить пользователя или группу .
  6. Введите имя, которое вы хотите добавить в политику, в поле Имена пользователей и групп .
  7. Нажмите ОК .
  8. Закройте оснастку MMC «Локальные параметры безопасности».

Помогло ли какое-либо из приведенных выше решений исправить службу, не запущенную из-за ошибки входа в систему? Дайте нам знать ваш опыт в разделе комментариев ниже.

Примечание редактора: этот пост был первоначально опубликован в декабре 2017 года и с тех пор был полностью переработан и обновлен для обеспечения свежести, точности и полноты.

Разрешить службе Windows взаимодействовать с рабочим столом

Как программно включить «Разрешить взаимодействие службы с рабочим столом»?

В services.msc > Действие > Свойства > Вход в систему > Разрешить взаимодействие службы с рабочим столом я могу включить взаимодействие службы с рабочим столом. Я хочу, чтобы мой сервис воспроизводил звук (MP3, WAV и т. д.).

services.msc > Action > Properties > Log On > Allow service to interact with desktop

3 ответа

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

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

Например, на сервере Microsoft SQL есть средство мониторинга. Это приложение запускается в сеансе пользователя и подключается к службе, предоставляя вам информацию о том, запущена ли служба, и позволяя вам останавливать и запускать службу базы данных.

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

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

На вкладке Вход в окне свойств службы Windows установлен флажок «Разрешить взаимодействие службы с рабочим столом». Если вы пытаетесь проверить это поле программно, вам нужно указать флаг SERVICE_INTERACTIVE_PROCESS при создании службы с помощью CreateService API. (См. MSDN).

Однако обратите внимание, что в Windows Vista службам строго запрещено напрямую взаимодействовать с пользователем:

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

Эта «функция» не работает, и общепринятое мнение подсказывает, что вам все равно не следует полагаться на нее. Службы не предназначены для предоставления пользовательского интерфейса или разрешения какого-либо прямого взаимодействия с пользователем. Microsoft предупреждала, что этой функции следует избегать с первых дней существования Windows NT из-за возможных угроз безопасности. Ларри Остерман спорит, почему это всегда было плохой идеей . И он не единственный .

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *