В дополнение к предыдущему ответу, в котором показан правильный код для получения значения из переменной IADsLargeInteger
, я просто хочу сказать, что нет необходимости добавлять ссылку на библиотеку типов COM, если вам нужен только этот интерфейс.
Для работы с типом COM вы можете определить интерфейс в собственном коде:
[ComImport, Guid("9068270b-0939-11d1-8be1-00c04fd8d503"), InterfaceType(ComInterfaceType.InterfaceIsDual)]
internal interface IAdsLargeInteger
{
long HighPart
{
[SuppressUnmanagedCodeSecurity] get; [SuppressUnmanagedCodeSecurity] set;
}
long LowPart
{
[SuppressUnmanagedCodeSecurity] get; [SuppressUnmanagedCodeSecurity] set;
}
}
и используйте его так же:
var largeInt = (IAdsLargeInteger)directoryEntry.Properties[propertyName].Value;
var datelong = (largeInt.HighPart << 32) + largeInt.LowPart;
var dateTime = DateTime.FromFileTimeUtc(datelong);
Также есть хорошая статья, объясняющая как интерпретировать данные ADSI
person
Mikhail Tumashenko
schedule
04.12.2018