Large Integer Property Type

To write values to properties that require large integers, use the System.Int64 structure. To read values from properties that use large integers, use COM Interop to access IADsLargeInteger. In ADSI, large integers use the property type ADSTYPE_LARGE_INTEGER.

Note  In the Active Directory Schema, the syntax name used for large integers is called LargeInteger and is represented in the Syntax row of attribute tables with the Syntax ID: 2.5.5.16.

The following code example shows how to write large integers.

[Visual Basic .NET]

Imports System.DirectoryServices
Imports ActiveDs
...
Try

    Dim ent As New DirectoryEntry("LDAP://CN=My User Name,OU=Marketing,DC=fabrikam,DC=com")
    Dim myNumber As System.Int64 = 523442149523
    Dim LargeInt As New ActiveDs.LargeIntegerClass

    LargeInt.HighPart = CType((myNumber >> 32), Integer)
 
    myNumber = myNumber << 32
    myNumber = myNumber >> 32

    LargeInt.LowPart = (Convert.ToInt32(myNumber))
    ent.Properties("singleLargeInteger").Value = LargeInt

    ent.CommitChanges()
                       
Catch e As Exception
    Console.WriteLine(e.ToString())

End Try

[C#]

System.Int64 myNumber=523442149523;
LargeInteger l= new LargeInteger();
l.HighPart = (int) (myNumber >> 32);
l.LowPart = (int) (myNumber & 0xFFFFFFFF);
ent.Properties["singleLargeInteger"].Value = l;
ent.CommitChanges();

The following code example shows how to read large integers.

[Visual Basic .NET]

Dim largeInt As System.Int64 = 0
Dim int64Val As IADsLargeInteger = CType(usr.Properties("forceLogoff").Value, IADsLargeInteger)
largeInt = int64Val.HighPart * 0x100000000.ToUInt32() + int64Val.LowPart
Console.WriteLine(largeInt)

[C#]

System.Int64 largeInt=0;
IADsLargeInteger int64Val = (IADsLargeInteger) ent.Properties["forceLogoff"].Value;
largeInt = int64Val.HighPart * 0x100000000 + int64Val.LowPart;
Console.WriteLine(largeInt);