2

У нас есть программа, которая находится на сервере и должна всегда работать, но важно, чтобы только один ее экземпляр работал. Мы добавили раздел реестра в HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Run, чтобы он запускался при запуске.

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

1 ответ1

0

Спасибо @DavidPostill за руководство в правильном направлении.

Я сделал пакетный файл, как было предложено, используя следующий вопрос о stackoverflow в качестве основы: https://stackoverflow.com/questions/162291/how-to-check-if-a-process-is-running-via-a- пакетный сценарий

Вот что я придумал:

SETLOCAL EnableExtensions
set EXE=MyProgram.exe
FOR /F %%x IN ('tasklist /NH /FI "IMAGENAME eq %EXE%"') DO IF %%x == %EXE% goto FOUND
start C:/path/to/MyProgram.exe
:FOUND

Затем я изменил запись в реестре, указав на этот пакетный файл, а не на сам исполняемый файл.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .