• 活动目录AD 取用户过期时间accountExpires


    今天整了一天时间,终于可以取到accountExpires

    并转换为DateTime时间。

    private long LongFromLargeInteger(object largeInteger)
        {
            System.Type type = largeInteger.GetType();
            int highPart = (int)type.InvokeMember("HighPart", System.Reflection.BindingFlags.GetProperty, null, largeInteger, null);
            int lowPart = (int)type.InvokeMember("LowPart", System.Reflection.BindingFlags.GetProperty, null, largeInteger, null);

            return (long)highPart << 32 | (uint)lowPart;
        }
        DateTime LargeIntToDateTime(ActiveDs.LargeInteger li)
        {
            long lTime;
            lTime = (long)li.HighPart;
            lTime <<= 32;
            lTime |= (uint)li.LowPart;
            return System.DateTime.FromFileTime(lTime);
        }

    ActiveDs.LargeInteger pwdLastSet = child.Properties["pwdLastSet"].Value as ActiveDs.LargeInteger;

    if ((accountExpires.HighPart == Int32.MaxValue) && (accountExpires.LowPart == -1))
    {

    //有效时间

    //时间总是相差1天,所以我加了一个 -1

    String dt=LargeIntToDateTime(accountExpires).AddDays(-1).ToString()
    }

    largeInteger 找不能命名空间了吧?

    引用com 组件:Active DS Type Library

    接下来设置这个属性,就比较方便了

    using System.Reflection;

    // Get the native object.
    Type type = usr.NativeObject.GetType();
    Object adsNative = usr.NativeObject;

    // Use the Type.InvokeMember method to invoke the
    // AccountExpirationDate property setter.
    type.InvokeMember(
        "AccountExpirationDate",
        BindingFlags.SetProperty,
        null,
        adsNative,
        new object[]{"12/29/2004"});

    // Commit the changes.
    usr.CommitChanges();

    The following C# example shows how to use the InvokeSet method to set the value of the IADsUser.AccountExpirationDate property.

    // Use the DirectoryEntry.InvokeSet method to invoke the
    // AccountExpirationDate property setter.
    usr.InvokeSet(
        "AccountExpirationDate",
        new object[] {new DateTime(2005, 12, 29)});

    // Commit the changes.
    usr.CommitChanges();

  • 相关阅读:
    AutoCAD 相关的在线多级同步的一些资料收集 beta
    FUSLOGVW 工具来报告错误的具体信息
    [转]阿朱:帮助过我的那些书和人
    Accelerated C++ 习题答案
    一些帮助理解的短视频
    Visual Studio 控制台程序无法输出中文
    [翻译]ObjectArx.Net下Invoke非托管的函数
    LINQ&EF任我行(二)LinQ to Object (转)
    软件编程中的21条法则[转]
    VAssistX的VA Snippet Editor使用小讲 [转]
  • 原文地址:https://www.cnblogs.com/jamin/p/2136506.html
Copyright © 2020-2023  润新知