Представим терминал, на нем сидит n-ое кол-во пользователей. Как сделать так, что бы каждый пользователь мог запустить 1 экземпляр программы?
Видел решение контроля этого для одного пользователя системы через создание Mutex с определенным именем и проверкой его существования. Ну, вроде, это работать не будет, так как Mutex-это, по идее, глобальный объект ОС.
Видел решение, через проверку существующих экземпляров и просмотр логина пользователя. Однако, для этого, по идее, нужны спец. права. Так как в том же Task Manager нельзя без спец. прав посмотреть процессы других юзеров в системе.
Видел решение, через проверку существующих экземпляров и просмотр логина пользователя. Однако, для этого, по идее, нужны спец. права.
Нет. Твоя задача тать возможность запускать одну программу на одного юзера. Проверку что там у других юзеров делать вообще не нужно! И спецправ иметь не нужно, соответственно. А для чего? В рамках одного инстанса программы нужно знать только про другие инстансы программы под конкретным данным юзером. Другие пользователи тебя колыхать не должны вообще, если так подумать :)
И да, дополнительное гугление по ключевикам
c# app instance "per user"
показало, что прекрасным способом для поставленной задачи является создание локального мьютекса ( "Local\"
). Но может быть возможность запуска нескольких сессий одного юзера. На серверах например. И тогда может вылезти проблемка.
Но если хочется быть на 100% уверенным в том, что только 1 инстанс на юзера, то нужно использовать "Global\"
+ UserDomainName + UserName + гуид.
string globalMutexName = string.Format(
CultureInfo.InvariantCulture,
"Global\\AppName~{0}~{1}~some-unique-guid",
Environment.UserDomainName,
Environment.UserName);
_machineLocalAppInstanceMutex = new System.Threading.Mutex(true, globalMutexName, out mutexIsNew);
if (!mutexIsNew)
{
Shutdown();
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Есть необходимость добавления CLR сборки в связке с самописной библиотекой классов (подключение к внешнему веб-сервису)При установке библиотеки...
Есть такой код на C#Можно ли его как-то упростить и привести к однострочному виду, т