Убедитесь, что приложение не запущено на другой учетной записи пользователя c # - PullRequest
0 голосов
/ 08 ноября 2018

Я пытаюсь ограничить использование приложением нескольких экземпляров на уровне компьютера, т. Е. На компьютер будет входить несколько пользователей, и это приложение должно иметь только один экземпляр по соображениям производительности. Поэтому, если пользователь A запускает приложение, пользователь B должен просто получить сообщение о том, что это приложение уже запущено в учетной записи пользователя A. Теперь, прежде чем начать изучать процессы, я уже попробовал это, и это не работает, потому что для того, чтобы мое приложение проверяло, запущен ли аналогичный процесс, необходимо запустить процесс (приложение), в данном случае приложение. никогда не начнется.

Я использую это для ограничения нескольких экземпляров, и это прекрасно работает, но работает только на уровне пользователя.

Microsoft.VisualBasic.ApplicationServices

public class SingleInstanceApplication : WindowsFormsApplicationBase
{
    private SingleInstanceApplication()
    {
        base.IsSingleInstance = true;
    }

    public static void Run(Form f, StartupNextInstanceEventHandler startupHandler)
    {
        SingleInstanceApplication app = new SingleInstanceApplication();
        app.MainForm = f;
        app.StartupNextInstance += startupHandler;
        app.Run(Environment.GetCommandLineArgs());
    }
}

Любая помощь или совет будет высоко ценится ...

1 Ответ

0 голосов
/ 08 ноября 2018

Как пользователи получают доступ к приложению? Вы можете создать пакетный скрипт, который проверяет процесс, если он запущен, тогда скрипт просто не запустит приложение. Не уверен, если вы хотите решить это программно внутри вашего приложения или с помощью других средств. Но если вы не хотите, чтобы второй экземпляр указанного приложения выполнялся, ваша лучшая ставка была бы вне вашего приложения, например, пакетного сценария.

Существует также следующее: межпользовательский мьютекс C # . Там, где я работаю, у нас установлены флаги для определенных таблиц SQL, которые не позволяют нескольким пользователям редактировать записи одновременно. Или вы можете создать скрытый файл блокировки, когда пользователь входит в систему, и затем удалить указанный файл, когда пользователь выходит из системы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...