我现在有一个非常棘手的情况..
我有一个应用程序可以下载特定电子邮件帐户的电子邮件附件,然后将这些附件保存到指定的文件夹中。该应用程序还具有一些功能,如按日期排序附件,按关键字排序等。
因此该应用程序有两个主要功能:
电子邮件附件下载
分拣
要求:
只有一个 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个应用程序实例应该为所有管理员运行..谢谢。
答案 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