【发布时间】:2011-04-04 07:48:45
【问题描述】:
我有一个具有很多属性的UserPrincipal 对象,但我找不到密码过期日期的属性。
如何做到这一点?
【问题讨论】:
标签: c# active-directory
我有一个具有很多属性的UserPrincipal 对象,但我找不到密码过期日期的属性。
如何做到这一点?
【问题讨论】:
标签: c# active-directory
这是我能想到的最简单的方法...
using System.DirectoryServices;
using System.DirectoryServices.AccountManagement;
using ActiveDs;
//...
PrincipalContext domain = new PrincipalContext(ContextType.Domain);
UserPrincipal user = UserPrincipal.FindByIdentity(domain, "username");
DirectoryEntry entry = (DirectoryEntry)user.GetUnderlyingObject();
IADsUser native = (IADsUser)entry.NativeObject;
Console.WriteLine(user.GivenName + "'s password will expire on " + native.PasswordExpirationDate);
注意 #1:ActiveDs 在 Add Reference 对话框的 COM 选项卡上列为 Active DS 类型库
注意 #2:据我所知,PasswordExpirationDate 是 UTC 时间。
【讨论】:
FindByIdentity 非常慢。主要在本地机器上。在这些情况下,最好使用PrincipalSearcher