PrincipalContext & UserPrincipal, как узнать, когда срок действия пароля истекает?

У меня есть объект UserPrincipal с большим количеством свойств, но я не могу найти свойство для даты истечения срока действия пароля.

Как это можно сделать?

Ответ 1

Это самый простой подход, который я смог придумать...

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 + " password will expire on " + native.PasswordExpirationDate);


Примечание # 1: ActiveDs отображается на вкладке COM диалогового окна Добавить ссылку в виде библиотеки типов Active DS

Примечание # 2: Насколько я могу судить, PasswordExpirationDate находится в UTC.