Windows。我想只允许运行一个应用程序的副本(对于一个用户或整个计算机 - 都行)。如果不编程(使用互斥体或其他东西),我就无法访问源代码。但允许使用 Power Shell 之类的脚本、批处理文件或安全策略中的规则,以及注册表编辑。
因此场景可以如下所示:
用户运行一个应用程序,
用户尝试再次运行应用程序,而第一个副本仍在运行,但什么也没发生。
这不是某种安全要求,而只是为了方便。我不太清楚——也许应用程序使用了一些共享数据,而第二个副本只是重写了它。他们只是要求我以某种管理方式只允许一个副本运行。
答案1
使应用程序成为单实例的解决方法:编写一个脚本来检测应用程序是否正在运行,如果正在运行则不执行任何操作。
在文本编辑器中,复制以下脚本并将其保存为批处理文件,将应用程序的名称替换为 Firefox。
@echo off
tasklist | findstr "firefox.exe"
if %errorlevel% equ 0 goto running
if %errorlevel% equ 1 start " " "C:\Program Files (x86)\Mozilla Firefox\firefox.exe"
exit
:running
exit
然后为.bat文件创建快捷方式,打开快捷方式的属性,并设置跑步到最小化以避免看到 CMD 提示符。
当然,用户可以只需运行应用程序本身,创建第二个实例。
顺便说一句,这个脚本有一个问题,希望得到帮助解决:如果应用程序最小化,使用该快捷方式不是让它聚焦。我尝试使用发送键()到应用程序,但未能提升它。