** Способ обработки свойства lastLogonTimestamp, полученного из DirectoryEntry, состоит в преобразовании его в IADSLargeInteger
из:
http://www.dotnet247.com/247reference/msgs/31/159934.aspx**
__ComObject, возвращаемый для этих типов, является IADsLargeInteger для
числовые значения и IADsSecurityDescriptor для SecurityDescriptors.
Вы можете включить ссылку на вкладку COM в Active DS Type Lib и получить
определение для этих интерфейсов или определить их вручную. Вот
образец:
using System;
using System.DirectoryServices;
using System.Runtime.InteropServices;
//This is the managed definition of this interface also found in
ActiveDs.tlb
[ComImport]
[Guid("9068270B-0939-11D1-8BE1-00C04FD8D503")]
[InterfaceType(ComInterfaceType.InterfaceIsDual)]
internal interface IADsLargeInteger
{
[DispId(0x00000002)]
int HighPart{get; set;}
[DispId(0x00000003)]
int LowPart{get; set;}
}
class Class1
{
[STAThread]
static void Main(string[] args)
{
DirectoryEntry entry = new
DirectoryEntry("LDAP://cn=user,cn=users,dc=domain,dc=com");
if(entry.Properties.Contains("lastLogon"))
{
IADsLargeInteger li =
(IADsLargeInteger)entry.Properties["lastLogon"][0];
long date = (long)li.HighPart << 32 | (uint)li.LowPart;
DateTime time = DateTime.FromFileTime(date);
Console.WriteLine("Last logged on at: {0}", time);
}
}
}
Дэвид Стуки
Поддержка разработчиков Microsoft