palraj001 Ответов: 1

Ограничьте запуск приложения, если оно уже открыто на основе зарегистрированного пользователя VB.NET?


Всем Привет,

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

p = Process.GetProcessesByName("application.exe")
       If p.Count > 1 Then
          XtraMessageBox.Show("Application" & " is already running", "Meg", MessageBoxButtons.OK, MessageBoxIcon.Warning)
           End
       End If


Это прекрасно работает.

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

как преодолеть эту проблему??



С уважением,
Палрадж М

Что я уже пробовал:

p = Process.GetProcessesByName("application.exe")
       If p.Count > 1 Then
          XtraMessageBox.Show("Application" & " is already running", "Meg", MessageBoxButtons.OK, MessageBoxIcon.Warning)
           End
       End If

1 Ответов

Рейтинг:
1

Andy Lanng

Я почти уверен, что сейчас самое время использовать мьютекс:

Непонятый Мьютекс[^]

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

Вам нужен первый вариант. Если мьютекс не является глобальным, то только каждый пользователь может видеть свой собственный. Убедитесь, что программа проверяет наличие мьютекса при запуске. Если он существует: "уже запущен", если нет: создайте мьютекс и запустите

Надеюсь, это поможет
Энди


Richard Deeming

Мьютекс существует поперек все процессы, не только .Чистые. :)

Andy Lanng

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