摘自from:http://www.cnblogs.com/flier/archive/2004/10/21/55266.html?Pending=true#Post

AD里的一些属性:"accountExpires", "pwdLastSet" 等,在ADSIEDIT.msc中查看类型为LargerInteger,但不能通过DirectoryEntry属性直接读出,读他人一篇blog得到解决方法。添加com引用using ActiveDs;使用ActiveDs里的类型,强制转化属性的value为IADsLargeInteger类型,在调用GetLongValue方法转为long型,下面代码拷贝自引用blog。


转:读AD里特殊的属性in C#public class AdUser : AdItem
{
转:读AD里特殊的属性in C#    
// http://msdn.microsoft.com/library/en-us/dnclinic/html/scripting09102002.asp
转:读AD里特殊的属性in C#
    public DateTime PasswordExpirationDate
{
转:读AD里特殊的属性in C#      
get
{
转:读AD里特殊的属性in C#        
if(IsPasswordNotExpire)
{
转:读AD里特殊的属性in C#          
return DateTime.MaxValue; // 帐号被设置为密码永不过期
转:读AD里特殊的属性in C#
        }
转:读AD里特殊的属性in C#        
else
{
转:读AD里特殊的属性in C#          
long lastChanged;
转:读AD里特殊的属性in C#
转:读AD里特殊的属性in C#          
try
{
转:读AD里特殊的属性in C#            lastChanged 
= GetLongValue((IADsLargeInteger)Properties["pwdLastSet"][0]);
转:读AD里特殊的属性in C#          }

转:读AD里特殊的属性in C#          
catch(Exception)
{
转:读AD里特殊的属性in C#            
return DateTime.MinValue; // 密码没有被设置过
转:读AD里特殊的属性in C#
          }
转:读AD里特殊的属性in C#
转:读AD里特殊的属性in C#          IADsLargeInteger maxAge 
= (IADsLargeInteger)Server.Properties["maxPwdAge"][0];
转:读AD里特殊的属性in C#
转:读AD里特殊的属性in C#          
if(maxAge.LowPart == 0)
转:读AD里特殊的属性in C#            
return DateTime.MaxValue; // 域中密码没有设置最大有效期限
转:读AD里特殊的属性in C#
          else
转:读AD里特殊的属性in C#            
return PasswordLastChanged.AddDays(Server.MaxPasswordDays);
转:读AD里特殊的属性in C#        }

转:读AD里特殊的属性in C#      }

转:读AD里特殊的属性in C#    }

转:读AD里特殊的属性in C#  }
 
转:读AD里特殊的属性in C# 
转:读AD里特殊的属性in C#
转:读AD里特殊的属性in C#

转:读AD里特殊的属性in C#internal long GetLongValue(IADsLargeInteger value)
{
转:读AD里特殊的属性in C#    
// 将 IADsLargeInteger 内容转换为 long 之前必须小心溢出
转:读AD里特殊的属性in C#    
// http://www.rlmueller.net/Integer8Discussion.htm
转:读AD里特殊的属性in C#
    return (long)(((ulong)value.HighPart << 32+ (uint)value.LowPart);
转:读AD里特殊的属性in C#  }

转:读AD里特殊的属性in C#

用户是否可以远程登录属性的读取方法:
引用名称空间:using TSUSEREXLib;
先将DirectoryEntry 变成基本的adsi类型,然后再定义为IADsTSUserEx类型,在调用里面的方法。
object objAD = userDEntry.NativeObject ;
   int k = ((IADsTSUserEx)objAD).AllowLogon;

//Value that specifies whether to allow remote observation or remote control of the user's
   //Terminal Services session. Values include: "Disable" (0), "EnableInputNotify" (1),
   //"EnableInputNoNotify" (2), "EnableNoInputNotify" (3), and "EnableNoInputNoNotify" (4).

相关文章: