我有一台 Windows Server 2008 64 位计算机,其中有一个程序设置为在启动时运行(快捷方式放在启动文件夹中)。因此,每当用户登录时,该应用程序都会启动。
但是,由于这是一个服务器,我们有几个用户通过远程桌面登录,并且(我相信)该应用程序为每个用户启动,从而产生多个实例。
现在,每次应用程序运行时,它都会通过 LAN 从外部缓冲区下载一些数据。这些是我们的电话系统的通话记录。但由于我们同时运行多个实例,导致数据出现问题和不一致。
有没有办法强制 Windows 仅运行该应用程序的一个实例?或者,是否可以将该应用程序作为 Windows 服务运行?
答案1
您在启动文件夹中有一个程序,您希望将其作为服务运行吗?使用以下方法创建服务国家安全监测中心并将其从启动文件夹中取出。
请注意,如果有人需要以交互方式使用此程序,她需要停止服务并正常运行程序。完成交互式会话后,她需要关闭程序,然后启动服务。
答案2
Windows 没有原生功能可以执行您所要求的操作。
选项: - 如果没有 GUI,则将应用程序作为服务运行 - 将应用程序移出启动文件夹 - 将应用程序移动到仅使用一个并发会话登录的特定用户的启动文件夹 - 编写一个脚本,作为 cmd 或 ps 脚本,'做正确的事情'(例如检查应用程序最近是否运行过,或者是否正在运行等)
答案3
我找到了一款适用于 Windows 10 的免费应用程序,它名为 SingleInstance。您可以在文章中找到更多详细信息: https://www.addictivetips.com/windows-tips/disable-multiple-instances-of-an-app-on-windows-10/
致谢: https://www.dcmembers.com/skrommel/download/singleinstance/