1

我搜索了很长时间如何定义组上允许的登录时间,就像可以从 Active Directory 中的帐户选项卡中使用用户一样。

我已经在 c# 中有一个类,它可以使用帮助“logonhours”属性进行查询以返回用户所有允许的时间列表。

  public byte[] GetLogonHours(string userName, string password, string path)
  {
     DirectoryEntry entry = this.GetUserAccount(userName, path);

     return (byte[])entry.Properties["logonHours"].Value;
  }

  public DirectoryEntry GetUserAccount(string username, string path)
  {
     using (DirectoryEntry objRootEntry = new DirectoryEntry(path))
     {
        using (DirectorySearcher objAdSearcher = new DirectorySearcher(objRootEntry))
        {
           objAdSearcher.Filter = "(&(objectClass=user)(samAccountName=" + username + "))";

           SearchResult objResult = objAdSearcher.FindOne();

           if (objResult != null)
           {
              return objResult.GetDirectoryEntry();
           }
        }
     }

     return null;
  }

我使用这篇文章来帮助我了解如何查询登录时间:

http://anlai.wordpress.com/2010/09/07/active-directory-permitted-logon-times-with-c-net-3-5-using-system-directoryservices-accountmanagement/

重要的是要了解我不希望某个功能知道用户上次登录的时间。我有一个功能,可以防止用户在某些时候登录。

我想要的是一个可以为一组用户应用登录时间的功能,我可以使用 c# 查询 Active Directory 以获取这些登录时间信息。

非常感谢你。

4

2 回答 2

1

据我了解,登录时间信息是用户信息。正如@Knite 指出的如何:在 Windows Server 2003 中限制域中的用户登录时间中所述,您可以更改它:

  1. 一个用户一个用户,不管你是否在用户列表上循环
  2. 将 GPO 应用于用户所属的组织单位

在您的情况下,您可以循环访问组的所有成员并更改他们的登录时间。

于 2011-10-13T03:17:32.787 回答
0

根据http://support.microsoft.com/kb/816666,您应该生成组中的用户列表并将他们的登录时间写入 CSV 文件。

于 2011-10-12T19:42:44.507 回答