2012-02-21 27 views
2

這是我的場景。我的應用程序會執行一些維護工作,只有管理員才能登錄到Windows。防止非管理員在特定時間段內在Windows上登錄

維護完成後,任何用戶都應該能夠登錄。

什麼是解決這個問題的好方法?任何指針將不勝感激。

編輯:操作系統是Windows 7

感謝, 普拉迪普

+1

查找GINA DLL,可能會給你一個起點。 – Dampsquid 2012-02-21 22:16:14

+0

這聽起來像Active Directory可以做的事情。 – 2012-02-21 22:28:37

+0

這聽起來像你還沒有計劃。這個問題對SF來說會更好。一旦你有一個鎖定非管理員的計劃,你可以問這裏是否遇到編碼問題。 – 2012-02-22 19:02:12

回答

1

枚舉所有NetUserEnum的用戶,對於那些非管理員禁止使用NetUserSetInfo用的USER_INFO_1結構和UF_ACCOUNTDISABLE他們的賬戶旗。保留您禁用的用戶列表,以便您完成後可以重新啓用他們的帳戶。 http://msdn.microsoft.com/en-us/library/windows/desktop/aa370960%28v=vs.85%29.aspx

+0

「逆向過程」,你的意思是「枚舉並啓用所有非管理員用戶」?這聽起來像一個可怕的想法。 – 2012-02-22 19:03:04

+0

當然沒有。只需保留一個禁用它的用戶列表並使用它。但我會編輯答案來澄清。 – 2012-02-22 19:19:02

+0

這不適用於域。 – 2012-02-22 22:44:19

1

一種解決方案是讓管理員創建一個本地組,其中包含應該能夠正常登錄的用戶列表,並將「本地登錄」權限僅指定給此組和管理員組。您可以使用LsaRemoveAccountRightsLsaAddAccountRights將本地登錄權切換到本地組。

我建議你讓管理員做最初的修改,因爲在沒有管理員的知識和同意的情況下搞亂用戶權限會讓人不安,並且可能會導致意想不到的副作用。