Доброго времени!
Имеется: Windows Server 2019: Terminal Server на котором работает несколько пользователей.
Каждый пользователь хочет использовать приложение "По-01".
Проблема: При запуске "По-01" под терминальным пользователем №1 оно запускается. При этом запустить приложение на пользователе № 2 невозможно, т.к. приложение ругается на то, что оно уже запущено.
Вопрос: Если ли какие-либо методы изолировать процессы каждого следующего пользователя так, чтобы приложение "По-01" не видела список процессов соседнего пользователя?
З.Ы. Зазработчик ПО на встречу не идёт. Вопрос не в лицензировании, а в "заброшенности" данного ПО.
Попытайтесь понять как именно программа обнаруживает, что она уже запущена.
Вы уже выяснили, что это явно не чтение списка процессов, т.к. при переименовании exe, ничего не меняется. На самом деле это дурацкий способ и никто так не делает.
Другие варианты: программа создает какой-то внешний именованый объект, который сама же при старте проверяет на наличие. В самом простом случае это может быть файл/каталог или ключ в реестре. Из других вариантов, например, именованные каналы ну и что там еще в винде может быть именованым. Или, например, открытый сетевой порт для прослушивания.
Самый простой вариант, который приходит в голову - это файл, который эксклюзивно захватывается при старте, или именованный канал.
Если получится, то, возможно, появятся идеи, как это обойти.
Можно начать с мониторинга обращений к файловой системе и мониторинга реестра. Соответствующие утилиты есть в комплекте утилит sysinternals, который можно взять на сайте микрософт.
Сделать "портабельным" - там некое подобие изолированной среды. Бывают с настраиваемой степенью изоляции.
P.S. Иногда достаточно просто сделать несколько копий одного exe файла с разными именами. Так как в списке процессов фигурирует в основном имя исполняемого файла и путь к нему.
Да, вот я тоже пытаюсь понять как бы что-то Docker-образное запилить, но что-то пока не получается.
Подскажите, что можно успешно использовать в качестве песочницы на терминальном сервере(с учётом, что пользователей TS может быть > 50)?