我开发了一个托管在一台服务器上的应用程序。许多用户通过远程桌面连接访问它,但有时我在任务管理器中看到同一用户已打开2-x实例。 我需要防止同一用户无法打开多个实例。但请注意,该程序可以由不同的用户多次打开。 请原谅我的英语。 谢谢。防止服务器使用相同用户名的多个实例
PS:我使用的WinForms和C#
我开发了一个托管在一台服务器上的应用程序。许多用户通过远程桌面连接访问它,但有时我在任务管理器中看到同一用户已打开2-x实例。 我需要防止同一用户无法打开多个实例。但请注意,该程序可以由不同的用户多次打开。 请原谅我的英语。 谢谢。防止服务器使用相同用户名的多个实例
PS:我使用的WinForms和C#
您可以创建用户名互斥。
bool b = true;
Mutex mutex = new Mutex(true, Environment.UserName.ToLowerInvariant() , out b);
if (!b) throw new InvalidOperationException("Another instance is running");
推荐的方法来查看您的应用程序的另一个实例是否已经运行是使用互斥锁。例如,请参阅here。
由于您希望允许应用程序的多个实例在不同的用户运行时运行,只需将当前用户名添加到互斥量的名称即可。例如,拨打互斥锁"MyApp"+Environment.UserName
您可以轻松获取正在运行的进程列表。然后看看这个获取过程的所有者:http://stackoverflow.com/questions/300449/how-do-you-get-the-username-of-the-owner-of-a-process – Dilshod
@如果用户不是机器的管理员,使用*远程桌面* – I4V