【发布时间】:2013-09-04 13:10:56
【问题描述】:
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
【问题讨论】:
标签: c# datetime active-directory largenumber