Служба запуска сценариев входа в Windows

739
0xDEAD BEEF

Я хочу создать скрипт входа в систему (win 10 pro), который запускает / останавливает синергетический сервис при входе / выходе из системы для конкретного пользователя.

Проблема заключается в том, что «net start synergy» дает отказ в доступе 5, так как он не выполняется от пользователя с повышенными правами.

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

------------ РЕШЕНИЕ --------------

Я использовал инструмент subinacl (от Microsoft), чтобы предоставить пользователю право запускать / останавливать / останавливать службу Synergy

subinacl.exe /service Synergy /grant=KitchenComputer\reinis-ubnt=PTO 

Затем я использовал планировщик заданий и создал две задачи. Одна задача была вызвана блокировкой рабочей станции, другая - разблокировкой рабочей станции (есть такие триггеры !!!). Затем я создал простой сценарий оболочки для остановки службы с помощью «net stop synergy». Для запуска сервиса я использовал следующие команды оболочки:

if %username% == reinis-ubnt ( net start Synergy ) 

Что касается subinacl и предоставления пользователю права на запуск сервиса, я опирался на этот ресурс - http://woshub.com/set-permissions-on-windows-service/

Спасибо суперпользователю за поддержку !!!

0
Если вы измените службу на автоматическую или с задержкой, она должна запуститься автоматически. Не нужно ничего сценарий. LPChip 6 лет назад 0
Я хочу, чтобы эта служба запускалась / останавливалась только для конкретного пользователя. 0xDEAD BEEF 6 лет назад 0

1 ответ на вопрос

1
ThisIsNotMyRealName

Этот ответ будет охватывать остановку процесса для пользователя. Это также позволит вам выполнить шаги для запуска службы в соответствии с запросом, используя runasкоманду (при условии, что учетная запись «без прав администратора» авторизована для выполнения Powershell / CMD)


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

Если это слишком сложно (или пользователь, входящий в систему на ПК, является администратором), вы можете повысить уровень сценария PowerShell для запуска в качестве администратора:

If (-NOT ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator"))  {  $arguments = "& '" + $myinvocation.mycommand.definition + "'" Start-Process powershell -Verb runAs -ArgumentList $arguments Break } 

Источник

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

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


Редактор локальной групповой политики

Просто добавьте сценарий запуска / завершения работы на стороне компьютера, чтобы вызвать и остановить службу:

  1. runasзапустить gpedit.mscфайл;
  2. Конфигурация компьютера, настройки Windows, сценарии (запуск / выключение)
  3. Добавьте предопределенный скрипт для выполнения файла:

    runas.exe /user:localhost\Admnistrator net start synergy