使程序在 Windows 启动时仅执行一次

使程序在 Windows 启动时仅执行一次

我们有一个程序位于服务器上,应该始终运行,但重要的是只有一个实例应该运行。我们在“HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Run”中添加了一个注册表项,以便它在启动时运行。

但是,当多个用户通过远程桌面登录服务器时,我们遇到了一个问题 - 每个用户都会启动一个实例。无论有多少用户登录,我们怎样才能让它只启动一次?

答案1

感谢@DavidPostill 为我指明正确的方向。

我按照建议制作了一个批处理文件,并使用 stackoverflow 上的以下问题作为基础:https://stackoverflow.com/questions/162291/how-to-check-if-a-process-is-running-via-a-batch-script

以下是我的想法:

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

然后我改变注册表项以指向该批处理文件而不是可执行文件本身。

相关内容