0

我们有一个程序在我们网络中的不同计算机上运行,​​该程序需要使用特定的管理员帐户登录才能执行某些任务。

我们的供应商编写了以下代码来检查用户是否是本地管理员。

问题是:

  • 如果管理员用户之前登录过计算机,凭据是否会保存在缓存中,这样即使没有网络连接,下面的代码也能正常工作?
  • 如果是这样,我们如何强制保存这些凭据?
  • 否则,是否有任何替代方法可以使用缓存中的凭据登录?

    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;
    }
    

提前致谢

4

0 回答 0