K
Kenneth H. Young
I am trying to write a VB app in VS.net to find the lastLogonTimestamp and
have found some example but the answer returned is always the same
'12/31/1600 7:00:00 PM' for any user account.
Thanks!
Below is a snippet of the code.
Dim Data1 As String
Dim Data3 As ActiveDs.LargeIntergerClass
Dim Data4 as Date
Din lngHigh, lngLow, timeAdj As Int64
Dim x As Integer = 0
' Bind to the Default Active Directory with the RootDSE object.
rootDSE = GetObject("LDAP://RootDSE")
sObjectDN = "LDAP://" & rootDSE.Get("defaultNamingContext")
Me.txtStatus.Text = "Connecting to: " & sObjectDN
Dim EntryPath As String = ("" & sObjectDN & "")
Entry = New DirectoryEntry(EntryPath)
Entry.RefreshCache()
Dim Searcher As New DirectorySearcher(Entry)
Searcher.PageSize = 5000
Dim strContact As String = "(&(objectClass=user)(mail=sue*))"
Searcher.Filter = strContact
Searcher.PropertiesToLoad.Add("cn")
Searcher.PropertiesToLoad.Add("lastLogon")
Searcher.PropertiesToLoad.Add("givenName")
Searcher.PropertiesToLoad.Add("sn")
Dim Results As System.DirectoryServices.SearchResult
On Error Resume Next
For Each Results In Searcher.FindAll()
Data1 = Nothing
Data3 = Nothing
If Not Results.GetDirectoryEntry().Properties("cn").Value =
Nothing Then
Data1 =
Results.GetDirectoryEntry().Properties("cn").Value.ToString
Else : GoTo Skip
End If
Data3 =
Results.GetDirectoryEntry().Properties("lastLogonTimestamp").Value
lngHigh = Data3.HighPart
lngLow = Data3.LowPart
timeAdj = lngHigh * (2 << 32) + lngLow
timeAdj = timeAdj / (60 * 10000000)
timeAdj = timeAdj / 1440
Data4 = DateTime.FromFileTime(timeAdj).ToShortDateString & " " &
DateTime.FromFileTime(timeAdj).ToShortTimeString
Data4 = Data4 + #1/1/1601#
Me.txtResults.Text = Me.txtResults.Text & Data1 & ", " & Data4 &
vbCrLf
Skip:
Next
have found some example but the answer returned is always the same
'12/31/1600 7:00:00 PM' for any user account.
Thanks!
Below is a snippet of the code.
Dim Data1 As String
Dim Data3 As ActiveDs.LargeIntergerClass
Dim Data4 as Date
Din lngHigh, lngLow, timeAdj As Int64
Dim x As Integer = 0
' Bind to the Default Active Directory with the RootDSE object.
rootDSE = GetObject("LDAP://RootDSE")
sObjectDN = "LDAP://" & rootDSE.Get("defaultNamingContext")
Me.txtStatus.Text = "Connecting to: " & sObjectDN
Dim EntryPath As String = ("" & sObjectDN & "")
Entry = New DirectoryEntry(EntryPath)
Entry.RefreshCache()
Dim Searcher As New DirectorySearcher(Entry)
Searcher.PageSize = 5000
Dim strContact As String = "(&(objectClass=user)(mail=sue*))"
Searcher.Filter = strContact
Searcher.PropertiesToLoad.Add("cn")
Searcher.PropertiesToLoad.Add("lastLogon")
Searcher.PropertiesToLoad.Add("givenName")
Searcher.PropertiesToLoad.Add("sn")
Dim Results As System.DirectoryServices.SearchResult
On Error Resume Next
For Each Results In Searcher.FindAll()
Data1 = Nothing
Data3 = Nothing
If Not Results.GetDirectoryEntry().Properties("cn").Value =
Nothing Then
Data1 =
Results.GetDirectoryEntry().Properties("cn").Value.ToString
Else : GoTo Skip
End If
Data3 =
Results.GetDirectoryEntry().Properties("lastLogonTimestamp").Value
lngHigh = Data3.HighPart
lngLow = Data3.LowPart
timeAdj = lngHigh * (2 << 32) + lngLow
timeAdj = timeAdj / (60 * 10000000)
timeAdj = timeAdj / 1440
Data4 = DateTime.FromFileTime(timeAdj).ToShortDateString & " " &
DateTime.FromFileTime(timeAdj).ToShortTimeString
Data4 = Data4 + #1/1/1601#
Me.txtResults.Text = Me.txtResults.Text & Data1 & ", " & Data4 &
vbCrLf
Skip:
Next