2014-03-05 26 views
0

我現在所擁有的一個非常棘手的局面..應用邏輯 - 只允許一個管理員用戶使用的應用程序

我有下載特定的電子郵件帳戶的電子郵件附件,然後一個應用程序保存那些附着於指定文件夾。該應用程序也有一些功能,如按日期的附件,按關鍵字排序等

所以應用程序有兩個主要特點:

電子郵件附件下載

排序


要求:

只有ONEadministrator可以同時運行特徵和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個應用程序實例應該運行所有管理員..謝謝。

+1

請改變問題的標題到一個適當的標題 –

回答

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

是的,爲什麼不通過數據庫變量值是更好的方法,除了你的應用程序崩潰(而不是正常關閉)的實例,並且該值不重置。 – Baljeetsingh

+0

嗯。這看起來不錯,我會試試看。 – Codemunkeee

1

您也可以用一個簡單的信號文件做的做到這一點。基本前提是,當應用程序啓動並且用戶是管理員用戶時,嘗試將文件打開到所有用戶可見的公共位置。如果文件存在,請嘗試擦除它,以防其他用戶可能中止並且未正確關閉和擦除文件。

如果文件無法刪除,則管理員仍然處於活動狀態,並且該文件處於打開狀態。當用戶完成後,關閉並擦除文件...

您可以在應用程序中爲信號量文件是他們的(或不)的狀態,並允許(或不)特殊的額外特徵。

此外,該文件可能是那樣簡單......

X:\ YourSharePath \ ActiveAdminUser.txt

+1

嘿謝謝:DI認爲這個問題是當應用程序崩潰,無法刪除sema文件..但這一個也是很好:D – Codemunkeee

+0

@Codemunkeee,這就是整個點...如果人崩潰,文件句柄將被釋放,這就是爲什麼我指出要先試着擦除文件。如果仍然使用,那麼有人仍然擁有它,否則,他們墜毀,你抹去它,併爲你自己創造一個新的繼續直到你完成。 – DRapp

+0

與數據庫一起玩並不會更安全,而是使用鎖而不是文件中繼?應用程序自動發佈鎖定版本 – Baljeetsingh

相關問題