C# 如何允许不同的登录ID在同一台本地计算机上登录应用程序一次

C# 如何允许不同的登录ID在同一台本地计算机上登录应用程序一次,c#,wpf,singleton,C#,Wpf,Singleton,我有一个窗口应用程序,它由启动屏幕、登录窗口和主窗口组成。正如我所搜索的,大多数单实例应用程序检查都是在应用程序启动时进行的(App.xaml.cs): 对于我的情况,我希望只允许一个具有不同登录ID的用户在同一台本地计算机上登录应用程序一次。既然上面的方法是在App.xaml.cs中完成的,我如何在Login.xaml.cs或MainWindow.xaml.cs中实现上面的方法 通过比较流程主标题窗口: public void SingleInstanceHandler() { Pro

我有一个窗口应用程序,它由启动屏幕、登录窗口和主窗口组成。正如我所搜索的,大多数单实例应用程序检查都是在应用程序启动时进行的(App.xaml.cs):


对于我的情况,我希望只允许一个具有不同登录ID的用户在同一台本地计算机上登录应用程序一次。既然上面的方法是在App.xaml.cs中完成的,我如何在Login.xaml.cs或MainWindow.xaml.cs中实现上面的方法

通过比较流程主标题窗口:

public void SingleInstanceHandler()
{
    Process[] procList = Process.GetProcesses();

    foreach(Process proc in procList)
    {
      if (!string.IsNullOrEmpty(proc.MainWindowTitle))
      {
        if (proc.MainWindowTitle == windowTitle) 
        {
          //Show relevant message
          Application.Current.Shutdown();
        }
      }
    }
}

这不仅可以放在App.xaml.cs中,还可以放在Login.xaml.cs或MainWindow.xaml.cs中,方法是比较流程主标题窗口:

public void SingleInstanceHandler()
{
    Process[] procList = Process.GetProcesses();

    foreach(Process proc in procList)
    {
      if (!string.IsNullOrEmpty(proc.MainWindowTitle))
      {
        if (proc.MainWindowTitle == windowTitle) 
        {
          //Show relevant message
          Application.Current.Shutdown();
        }
      }
    }
}

这不仅可以放在App.xaml.cs中,还可以放在Login.xaml.cs或MainWindow中。xaml.cs

您的应用程序是否有可以管理会话状态的服务器组件?您好@MickyDuncan,我的应用程序需要连接到外部服务器。用户成功登录后,用户登录ID将显示在主窗口的标题栏上,因此我的想法是使用标题名称来检查单个实例,但我不知道如何执行,因为我发现的是在应用程序启动期间进行检查up@YWah如果你想在评论中这样做,然后,只需通过进程列表检查窗口标题,不允许用户登录程序(在登录按钮上?)如果有超过0个进程具有这样的窗口标题。如果用户Fozzie Bear试图在同一域的计算机A和B上使用它,则检查标题将不起作用。您应该能够将该代码移动到另一个类。它甚至可能是一个静态类。你的应用程序是否有可以管理会话状态的服务器组件?嗨@MickyDuncan,我的应用程序需要连接到外部服务器。用户成功登录后,用户登录ID将显示在主窗口的标题栏上,因此我的想法是使用标题名称来检查单个实例,但我不知道如何执行,因为我发现的是在应用程序启动期间进行检查up@YWah如果你想在评论中这样做,然后,只需通过进程列表检查窗口标题,不允许用户登录程序(在登录按钮上?)如果有超过0个进程具有这样的窗口标题。如果用户Fozzie Bear试图在同一域的计算机A和B上使用它,则检查标题将不起作用。您应该能够将该代码移动到另一个类。它甚至可以是一个静态类。