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();

  • 相关阅读:
    BF算法和KMP算法
    Python课程笔记 (五)
    0268. Missing Number (E)
    0009. Palindrome Number (E)
    0008. String to Integer (atoi) (M)
    0213. House Robber II (M)
    0198. House Robber (E)
    0187. Repeated DNA Sequences (M)
    0007. Reverse Integer (E)
    0006. ZigZag Conversion (M)
  • 原文地址:https://www.cnblogs.com/jamin/p/2136506.html
Copyright © 2011-2022 走看看