Изменить код определения Даты и Времени последнего Логона Юзера - Visual Basic .NET

Узнай цену своей работы

Формулировка задачи:

Всем привет! есть код:
Выводит в текстовые поля время и дату Логона (имя пользователя и время входа в систему) Как можно переделать/допилить код для для того что бы еще имя пользователя вводилось с клавиатуры в текстовое поле по которому необходимо определить время последнего логона? может у кого есть попоще код, без всяких лишних наворотов? Заранее спасибо за помощь!

Решение задачи: «Изменить код определения Даты и Времени последнего Логона Юзера»

textual
Листинг программы
Shared Function GetStartTime(machine As String, user As String) As Nullable(Of DateTime)
    Dim loggedOnUsers = New Dictionary(Of String, DateTime)(StringComparer.OrdinalIgnoreCase)
    Dim scope As ManagementScope = New ManagementScope(String.Format("\\{0}\root\cimv2", machine))
    Dim sessionQuery As SelectQuery = New SelectQuery("Win32_LogonSession")
    Using sessionSearcher As ManagementObjectSearcher = New ManagementObjectSearcher(scope, sessionQuery)
        Using sessionMOs As ManagementObjectCollection = sessionSearcher.[Get]()
            For Each sessionMO In sessionMOs
                If CType(sessionMO.Properties("LogonType").Value, UInt32) = 2 Then
                    Dim logonId = CStr(sessionMO.Properties("LogonId").Value)
                    Dim startTimeString = CStr(sessionMO.Properties("StartTime").Value)
                    Dim startTime = DateTime.ParseExact(startTimeString.Substring(0, 21), "yyyyMMddHHmmss.ffffff", System.Globalization.CultureInfo.InvariantCulture)
                    Dim userQuery As WqlObjectQuery = New WqlObjectQuery("ASSOCIATORS OF {Win32_LogonSession.LogonId='" & logonId & "'} WHERE AssocClass=Win32_LoggedOnUser")
                    Using userSearcher = New ManagementObjectSearcher(scope, userQuery)
                        Using userMOs = userSearcher.[Get]()
                            Dim username = userMOs.OfType(Of ManagementObject)().[Select](Function(u) CStr(u.Properties("Name").Value)).FirstOrDefault()
                            If Not loggedOnUsers.ContainsKey(username) Then
                                loggedOnUsers.Add(username, startTime)
                            ElseIf loggedOnUsers(username) > startTime Then
                                loggedOnUsers(username) = startTime
                            End If
                        End Using
                    End Using
                End If
            Next
        End Using
    End Using
    
    Dim result As DateTime
    If loggedOnUsers.TryGetValue(user, result) Then Return result
    Return Nothing
End Function

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.727 из 5
Похожие ответы