Я хочу создать сценарий входа (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/

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

1 ответ1

1

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .