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获取为可读的日期时间格式(例如8/13/2013或August 13, 2013等)
我尝试过这个方法,但它抛出了异常
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。