如何防止在两台不同的计算机上运行exe

本文关键字:计算机 exe 运行 两台 何防止 | 更新日期: 2023-09-27 18:10:24

我有一个用c#编写的表单应用程序。我把这个exe放到我公司的服务器上,所有的电脑都可以访问。我需要找到一个解决方案来知道这个exe是否在另一台计算机中运行。

因此,当一台计算机试图运行应用程序时,我应该检查另一台计算机是否已经运行相同的应用程序。

我在SO中发现了一些东西,但只有当同一台计算机运行两次exe时,它们才能正常工作。

这里的

如何防止在两台不同的计算机上运行exe

在服务器上设置一个用户可写的文件。当应用程序启动时,打开该文件进行写入,并在静态字段中保留对Stream的引用。当应用程序关闭时,关闭流。当应用程序崩溃或网络故障时,该文件将由操作系统自动释放。

例如,在Program.cs中:

private static Stream lockFile;
public static void Main()
{
  try
  {
    try
    {
      lockFile = File.OpenWrite(@"''server'folder'lock.txt");
    }
    catch (IOException e)
    {
      int err = System.Runtime.InteropServices.Marshal.GetLastWin32Error();
      if (err == 32)
      {
        MessageBox.Show("App already running on another computer");
        return;
      }
      throw; //You should handle it properly...
    }
    //... run the apps
  }
  finally
  {
    if (lockFile != null)
      lockFile.Dispose();
  }
}

基于

  • 如何防止在两台不同的计算机上运行exe
  • errorCode for The process cannot access file 'XYZ'因为它正在被另一个进程使用