如何将datetime转换为accountExpires AD属性?

时间:2017-08-31 08:01:54

标签: c# active-directory

我使用的DirectorySearcher过滤器不起作用,很可能是因为Active Directory中的accountExpires属性格式错误。我想使用LDAP查找所有已过期的帐户,但如何将DateTime.Now转换为accountExpires格式?我发现有很多关于将accountExpires转换为Datetime格式但不是相反的方式。例如,我找到了一个例子:

129383640000000000 is equivalent to Sat, 01 Jan 2011 14:00:00 GMT

我怎么能以其他方式做到这一点?我知道它是1 JAn 1601的100纳秒间隔,但不知道如何计算

1 个答案:

答案 0 :(得分:1)

您需要将其转换为FILETIME,as per the specification

DateTime dt = DateTime.Now.AddDays(30);
long ftAccountExpires = dt.ToFileTime();

在上面的示例中,如果您将accountExpires设置为ftAccountExpires的值,该帐户将在30天后过期