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

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

В services.msc> Action> Properties> Log On> Разрешить сервису взаимодействовать с рабочим столом, я включил сервис для взаимодействия с рабочим столом. Что это значит точно? Как я могу использовать его для воспроизведения звука (MP3, WAV и т.д.) Из моего сервиса?

ОТВЕТЫ

Ответ 1

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

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

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

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

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

Ответ 2

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

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

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

Ответ 3

Вам необходимо добавить serviceinstaller и записать код ниже в коммит-событии serviceinstaller.

Ответ 4

Источник

Пилим свою службу Windows – руководство для «не настоящих программистов»

Разрешить взаимодействие с рабочим столом что это. Смотреть фото Разрешить взаимодействие с рабочим столом что это. Смотреть картинку Разрешить взаимодействие с рабочим столом что это. Картинка про Разрешить взаимодействие с рабочим столом что это. Фото Разрешить взаимодействие с рабочим столом что это

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

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

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

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

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

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

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

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

Разрешить взаимодействие с рабочим столом что это. Смотреть фото Разрешить взаимодействие с рабочим столом что это. Смотреть картинку Разрешить взаимодействие с рабочим столом что это. Картинка про Разрешить взаимодействие с рабочим столом что это. Фото Разрешить взаимодействие с рабочим столом что это
Работа так называемого «сервера».

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

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

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

Разрешить взаимодействие с рабочим столом что это. Смотреть фото Разрешить взаимодействие с рабочим столом что это. Смотреть картинку Разрешить взаимодействие с рабочим столом что это. Картинка про Разрешить взаимодействие с рабочим столом что это. Фото Разрешить взаимодействие с рабочим столом что это
Настроенная служба.

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

Разрешить взаимодействие с рабочим столом что это. Смотреть фото Разрешить взаимодействие с рабочим столом что это. Смотреть картинку Разрешить взаимодействие с рабочим столом что это. Картинка про Разрешить взаимодействие с рабочим столом что это. Фото Разрешить взаимодействие с рабочим столом что это
Работающая служба.

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

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

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

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

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

Разрешить взаимодействие с рабочим столом что это. Смотреть фото Разрешить взаимодействие с рабочим столом что это. Смотреть картинку Разрешить взаимодействие с рабочим столом что это. Картинка про Разрешить взаимодействие с рабочим столом что это. Фото Разрешить взаимодействие с рабочим столом что это
Установка через PowerShell.

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

Разрешить взаимодействие с рабочим столом что это. Смотреть фото Разрешить взаимодействие с рабочим столом что это. Смотреть картинку Разрешить взаимодействие с рабочим столом что это. Картинка про Разрешить взаимодействие с рабочим столом что это. Фото Разрешить взаимодействие с рабочим столом что это
И вправду работает.

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

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

Разрешить взаимодействие с рабочим столом что это. Смотреть фото Разрешить взаимодействие с рабочим столом что это. Смотреть картинку Разрешить взаимодействие с рабочим столом что это. Картинка про Разрешить взаимодействие с рабочим столом что это. Фото Разрешить взаимодействие с рабочим столом что это
Настроить можно даже приоритет и использование ядер процессора.

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

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

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

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

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

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

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

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

Разрешить взаимодействие с рабочим столом что это. Смотреть фото Разрешить взаимодействие с рабочим столом что это. Смотреть картинку Разрешить взаимодействие с рабочим столом что это. Картинка про Разрешить взаимодействие с рабочим столом что это. Фото Разрешить взаимодействие с рабочим столом что это
Оно работает!

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

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

Источник

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

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

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

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

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

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

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

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

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

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

Чтобы настроить тип запуска службы с помощью командной строки

Дополнительная информация

Источник

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

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

c# windows-services desktop

4 ответа

26 Cody Gray [2010-11-21 12:56:00]

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

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

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

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

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

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

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

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

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

Вам нужно добавить Serviceinstaller и записать код ниже в командном событии serviceinstaller.

Источник

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

Разрешить взаимодействие с рабочим столом что это. Смотреть фото Разрешить взаимодействие с рабочим столом что это. Смотреть картинку Разрешить взаимодействие с рабочим столом что это. Картинка про Разрешить взаимодействие с рабочим столом что это. Фото Разрешить взаимодействие с рабочим столом что это

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

СВЯЗАННЫЕ ИСТОРИИ, ЧТОБЫ ПРОВЕРИТЬ:

Источник

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

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