我们有一个程序在我们网络中的不同计算机上运行,该程序需要使用特定的管理员帐户登录才能执行某些任务。
我们的供应商编写了以下代码来检查用户是否是本地管理员。
问题是:
- 如果管理员用户之前登录过计算机,凭据是否会保存在缓存中,这样即使没有网络连接,下面的代码也能正常工作?
- 如果是这样,我们如何强制保存这些凭据?
否则,是否有任何替代方法可以使用缓存中的凭据登录?
static bool UserExists(string domain, string username, string password) { if (System.Environment.GetEnvironmentVariable("UserDomain") != null) { if (string.Compare(System.Environment.GetEnvironmentVariable("UserDomain"), domain, true) != 0) { return false; } } string filter = string.Format("(&(ObjectClass={0})(sAMAccountName={1}))", "person", username); string[] properties = new string[] { "fullname" }; using (DirectoryEntry adRoot = new DirectoryEntry("LDAP://" + domain, null, null, AuthenticationTypes.Secure)) using (DirectorySearcher searcher = new DirectorySearcher(adRoot)) { adRoot.Username = username; adRoot.Password = password; searcher.SearchScope = SearchScope.Subtree; searcher.ReferralChasing = ReferralChasingOption.All; searcher.PropertiesToLoad.AddRange(properties); searcher.Filter = filter; if (searcher.FindOne() != null) { // If you want to see the user details: searcher.FindOne().GetDirectoryEntry(); return true; } } return false; }
提前致谢