zoukankan      html  css  js  c++  java
  • 活动目录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();

  • 相关阅读:
    MySql基础教程(三)——查询训练
    MySql基础教程(二)
    MySql基础教程(一)
    解决Eclipse闪退问题的方法总结
    MySQL图形工具 MySQL GUI Tools的安装使用方法
    MySql5.6版修改用户登录密码
    Windows下MySQL解压版的配置
    js 数组容易弄混的那些方法
    如何使CSS--better(系列二)
    如何使CSS--better(系列一)
  • 原文地址:https://www.cnblogs.com/jamin/p/2136506.html
Copyright © 2011-2022 走看看