@Dvach
Генератор тупых вопросов и ещё более тупых ответов

Как ограничить количество определённого процесса на пользователя Windows?

Есть определённая program.exe которая запускается на удалённом сервере к которому пользователи подключаются по RDP. Некоторые пользователи не очень умные, и могут не заметить что программа уже запущена. В этом случае пользователь запускает её ещё раз. Итак, уважаемые знатоки вопрос - как можно ограничить количество процесса program.exe для пользователя до одного, чтобы пользователь могу запускать только один экземпляр?
  • Вопрос задан
  • 315 просмотров
Пригласить эксперта
Ответы на вопрос 1
@rPman
Если пользователей не много, можно использовать taskscheduler, пропиши для каждого пользователя свою задачу запуска твоего приложения (без условия), в каждой пропиши соответствующего пользователя. В задаче есть опции - следить чтобы приложение было запущено только один раз, автоперезапуск и т.п.

В этом случае пользователям в ярлыке запуска укажи не само приложение а команду запуска задачи schtasks run

Иначе, запилить скрипт на powershell/windows scripting/любимый язык программирования, который будет при запуске приложения сохранять его pid, сохранять его в файле (имя файла должно содержать имя текущего пользователя, тогда каждому пользователю будет разрешен запуск только 1 экземпляра) и сравнивать его при следующем запуске с уже запущенным.

Можно использовать linux way, найти/собрать утилиту flock или ее аналог, она создает файл с указанным именем и блокирует его, если удачно, запускает указанную команду иначе нет, по завершению файл раблокируется, в некоторых случаях это подходит

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

Войдите, чтобы написать ответ

Похожие вопросы