public static string GetProperty(SearchResult searchResult, string PropertyName)
{
if (searchResult.Properties.Contains(PropertyName))
{
return searchResult.Properties[PropertyName][0].ToString();
}
else
{
return string.Empty;
}
}
上述方法适用于大多数 Active Directory 属性,但与日期/时间相关的属性除外,例如 pwdLastSet、maxPwdAge 等。
我的问题是如何将 pwdLastSet 设置为人类可读的日期时间(如 2013 年 8 月 13 日或 2013 年 8 月 13 日等)
我已经尝试过了,但它引发了异常
public static Int64 ConvertADSLargeIntegerToInt64(object adsLargeInteger)
{
var highPart = (Int32)adsLargeInteger.GetType().InvokeMember("HighPart", System.Reflection.BindingFlags.GetProperty, null, adsLargeInteger, null);
var lowPart = (Int32)adsLargeInteger.GetType().InvokeMember("LowPart", System.Reflection.BindingFlags.GetProperty, null, adsLargeInteger, null);
return highPart * ((Int64)UInt32.MaxValue + 1) + lowPart;
}
我正在使用以下代码将时间作为 Int64
Int64 passwordLastSet = ConvertADSLargeIntegerToInt64(objResult.Properties["pwdLastSet"][0]);
然后我打算使用 DateTime(Int64) 构造函数来创建一个 DateTime