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

时间:2014-06-26 06:48:37

标签: c# .net windows process

我有一个用C#编写的表单应用程序。我把这个exe放到我公司的服务器上,从所有计算机到达。我需要找到一个解决方案,以了解此exe是否在另一台计算机中运行。

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

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

Here

1 个答案:

答案 0 :(得分:2)

让用户在服务器上写入文件。应用程序启动时,打开该文件进行写入,并在静态字段中保留对Stream的引用。 关闭应用程序后,关闭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();
  }
}

基于