我的 WinForm 应用程序必须根据登录的用户打开特定的表单。在登录表单中,用户身份验证完成,用户提供用户名-密码。有效凭据位于 .csv 文件中。如果用户是有效的,登录表单被隐藏并出现 Form2。
我想要做的是阻止打开应用程序(登录表单)并与已经运行此应用程序的人提供相同的用户名密码的用户。我当前的解决方案是向每个进程(实例)添加一个具有登录用户名的环境变量,如下所示:
Process proc = System.Diagnostics.Process.GetCurrentProcess();
proc.StartInfo.EnvironmentVariables.Add("G2GUser",username);
当另一个实例打开时,检查尝试登录的用户是否已经在使用该应用程序。因此,正在检查此变量:
List<Process> processes = System.Diagnostics.Process.GetProcessesByName(System.IO.Path.GetFileNameWithoutExtension(System.Reflection.Assembly.GetEntryAssembly().Location)).ToList();
foreach (Process proc in processes)
{
StringDictionary sd = proc.StartInfo.EnvironmentVariables;
if (!String.IsNullOrEmpty(sd["G2GUser"]))
if (sd["G2GUser"] == username) {; //block this user}
}
问题是我可以看到进程列表,但未存储 EnvironmentVariables。你能为这种方法提出另一种方法吗?