在终端服务器情况下,我想确保每个用户只运行一个应用程序实例。
做这个的最好方式是什么?
这是我目前正在使用的,但它似乎没有按预期工作。我不能 100% 相信这一点。
int SID = Process.GetCurrentProcess().SessionId;
Process current_process = Process.GetCurrentProcess();
int proc_count = 0;
foreach (Process p in Process.GetProcessesByName(current_process.ProcessName))
{
proc_count++;
if (p.SessionId.Equals(SID))
{
if (proc_count > 1)
{
Application.Current.Shutdown();
return;
}
}
}
更新 为了帮助澄清我已阅读的评论,我认为它需要关闭会话 ID,因为并非所有客户端都会按照每个用户名跟随一个物理人,并且用户可以多次登录服务器。