应用程序逻辑 - 仅允许一个管理员用户使用应用程序

时间:2014-03-05 02:30:11

标签: c# vb.net

我现在有一个非常棘手的情况..

我有一个应用程序可以下载特定电子邮件帐户的电子邮件附件,然后将这些附件保存到指定的文件夹中。该应用程序还具有一些功能,如按日期排序附件,按关键字排序等。

因此该应用程序有两个主要功能:

电子邮件附件下载

分拣


要求:

只有一个 administrator可以同时运行这两项功能,normal users只能运行排序功能

问题:

如果有两个管理员帐户,如何才能将其限制为一个? 我现在只有一个有用的代码..

If My.User.IsInRole(ApplicationServices.BuiltInRole.Administrator) Then
   MsgBox("I have admin privileges")
Else
   MsgBox("I do not have admin privileges")
End If

我只需要知道其他管理员是否正在使用该应用。如果一个管理员已经运行了该应用程序,其他管理员就无法再运行它了。只有1个应用程序实例应该为所有管理员运行..谢谢。

2 个答案:

答案 0 :(得分:1)

为什么不创建一个应用程序级变量来保持计数

AdminLoggedinCount
应用启动时

默认为0和+1

If My.User.IsInRole(ApplicationServices.BuiltInRole.Administrator) Then
    If AdminLoggedinCount >=1
      MsgBox("try again later another admin is using now")
   Else
      MsgBox("I have admin privileges")
   End if
Else
   MsgBox("I do not have admin privileges")
End If

答案 1 :(得分:1)

你可以通过一个简单的信号量文件来做到这一点。基本前提是,当应用程序启动时,用户是管理员用户,尝试将文件打开到所有用户可见的公共位置。如果文件存在,请尝试将其删除,以防其他用户中止并且未正确关闭并删除该文件。

如果无法删除该文件,则在文件打开时,管理员仍处于活动状态。用户完成后,关闭并删除文件......

您可以在应用程序中拥有一个变量,用于信号量文件是他们(或不是)的状态,并允许(或不允许)特殊的额外功能。

同样,文件可以像......一样简单。

X:\ YourSharePath \ ActiveAdminUser.txt