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

  • 相关阅读:
    怎样创建动态扩容数组?
    怎样终止一个线程?
    模式识别
    基于Linux根据僵尸网络病毒平台《比尔盖茨》
    web.xml在&lt;init-param&gt;一个错误
    DTD学习笔记
    Java排序算法(四):Shell排序
    VC6迁移到VS2008几个问题——良好的代码,从我做起,从现在开始。
    Maven 建 Struts2 基本实现 CURD Controller
    Andy&#39;s First Dictionary
  • 原文地址:https://www.cnblogs.com/jamin/p/2136506.html
Copyright © 2011-2022 走看看