Назад | Перейти на главную страницу

Ищете предложения по программе, не допускающей нескольких сеансов

Мы работаем на машине с Windows Server 2012 R2 со службами удаленных рабочих столов. Идея состоит в том, что каждый может войти в систему и запустить программное обеспечение компании, которое требует обширной конфигурации, таким образом, нам нужно настроить его только один раз и передать настройки всем на этом ПК.

У нас также развернуты RemoteApps, и они работают с большинством программ.

Однако есть одна конкретная программа, Lutron RadioRA, которая отказывается работать в такой среде. Если он открыт кем-либо на компьютере, а другой пользователь пытается открыть его в своем собственном сеансе RDP, он жалуется, что программа уже запущена и не запускается.

Первой моей мыслью было попробовать Sandboxie, потому что я знаю, для чего она предназначена. Это вообще не сработало ... .NET сразу вылетел, и я получал массу ошибок типа «файл слишком большой для песочницы» и различные другие сбои, пока я не закрыл Sandboxie принудительно.

Следующей моей мыслью было попробовать "runas", поскольку он встроен в Windows. Я создал пользователя с именем runastest с простым паролем и попытался запустить runas, указывающую на EXE-файл программы. Введите пароль, и он запустился, как ожидалось. Переключился на другого пользователя, сделал то же самое, используя того же пользователя runastest ... та же ошибка, что и он уже запущен.

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

Программа предназначена для работы в виде отдельных экземпляров.

При разработке для Windows это называется «Global Mutex». Я не знаю, как это обойти. И даже если вы можете, это плохая идея. Поскольку программа была разработана с учетом единственного экземпляра, и в обход этого вы столкнетесь с непредсказуемым поведением программного обеспечения.

IMHO, вы должны установить сервер VNC на удаленном хосте и поделиться экземпляром, все будут иметь доступ к одному и тому же экземпляру рабочего стола, позволяя затем использовать программное обеспечение одновременно. Да! В то же время это означает, что люди начнут бороться, чтобы двигать мышью.

Редактировать:

С некоторыми исследованиями я нашел это решение для Lync. Может быть, это работает для вас. Он использует параметр «IsolatedSynchronizationObjects» для ThinApp, который гарантирует, что «глобальный мьютекс» будет изолирован. В той же ссылке показано, как можно определить, использует ли приложение глобальный мьютекс или нет, с помощью Обозреватель процессов.