Active Directory奇怪的属性值

时间:2014-03-09 23:42:15

标签: c# active-directory

我使用以下代码获取有关Active Directory中用户的信息:

    SearchResultCollection searchResults = null;
    string activeDirFilter = getActiveDirFilter();
    DirectoryEntry dirEntry = new DirectoryEntry();

    DirectorySearcher searcher = new DirectorySearcher(dirEntry)
    {
        PageSize = 100,
        Filter = activeDirFilter,
        SearchScope = SearchScope.Subtree
    };

此代码工作正常,我正在获取这些属性:

LASTLOGON
130388757393977187

PWDLASTSET
130378422326246669

LASTLOGONTIMESTAMP
130380275331980403

然而,我无法弄清楚价值,是否有人知道如何将这些数字解码为时间戳?

修改: 这个值不能是纪元以来的秒数,因为130388757393977187秒= 4 131 858.64千年。

它也不能是刻度,因为130388757393977187 = 413年。

2 个答案:

答案 0 :(得分:1)

您目前拥有Unix Timestamp,您应将其转换为DateTime对象并打印出来。

public static DateTime UnixTimeStampToDateTime(double unixTimeStamp)
{
    // Unix timestamp is seconds past epoch
    System.DateTime dtDateTime = new DateTime(1970,1,1,0,0,0,0,System.DateTimeKind.Utc);
    dtDateTime = dtDateTime.AddSeconds(unixTimeStamp).ToLocalTime();
    return dtDateTime;
}

答案 1 :(得分:1)

我解决了这个问题:

您需要使用

long x = 130388757393977187;
DateTime dateTime = DateTime.FromFileTimeUtc(x);