Results 1 to 2 of 2

Thread: List Logged On users [Resolved]

Threaded View

  1. #1

    Thread Starter
    Lively Member matt3011's Avatar
    Join Date
    May 2002
    Location
    France
    Posts
    82

    List Logged On users [Resolved]

    Hello, I've looked many places but I still can't make this work. Everything seems to work right until the LookupAccountSid.

    I adapted the code from PSLoggedOn which is in C

    I don't know what's wrong.

    I call the last function from the main one. As it is just debugging, don't care of the argument for that function and it doesn't return anything.

    VB Code:
    1. Declare Function GetLastError Lib "kernel32" () As Integer
    2.  
    3.     Declare Function LookupAccountSid Lib "advapi32.dll" Alias "LookupAccountSidA" (ByVal lpSystemName As String, ByVal Sid As Integer, ByVal Name As String, ByRef cbName As Integer, ByVal ReferencedDomainName As String, ByRef cbReferencedDomainName As Integer, ByRef peUse As Integer) As Integer
    4.  
    5.     Declare Function AllocateAndInitializeSid Lib "advapi32.dll" (ByVal pIdentifierAuthority As SID_IDENTIFIER_AUTHORITY, ByVal nSubAuthorityCount As Byte, ByVal nSubAuthority0 As Int32, ByVal nSubAuthority1 As Int32, ByVal nSubAuthority2 As Int32, ByVal nSubAuthority3 As Int32, ByVal nSubAuthority4 As Int32, ByVal nSubAuthority5 As Int32, ByVal nSubAuthority6 As Int32, ByVal nSubAuthority7 As Int32, ByRef lpPSid As Integer) As Integer
    6.  
    7.     Declare Function IsValidSid Lib "advapi32.dll" (ByVal pSid As Integer) As Integer
    8.  
    9.     Declare Sub FreeSid Lib "advapi32.dll" (ByVal pSid As Integer)
    10.  
    11.     Public Structure SID_IDENTIFIER_AUTHORITY
    12.         Dim Value() As Byte
    13.     End Structure
    14.  
    15.     Public Sub Init_Sid_Authority(ByVal Value As SID_IDENTIFIER_AUTHORITY)
    16.         Value.Value = New Byte() {0, 0, 0, 0, 0, 0}
    17.     End Sub
    18.  
    19.     Public Function myValue(ByVal int1 As Integer, ByVal int2 As Integer) As Integer
    20.         If int1 = -1 Then
    21.             Return int2
    22.         Else
    23.             Return int1
    24.         End If
    25.     End Function
    26.     Public Function myValue2(ByVal int1 As Integer) As Integer
    27.         If int1 = 0 Then
    28.             Return 10
    29.         Else
    30.             Return int1
    31.         End If
    32.     End Function
    33.     Public Function swscanf(ByVal SubKeyName As String, ByRef AuthorityVal As Integer, ByRef SubAuthorityVal0 As Integer, ByRef SubAuthorityVal1 As Integer, ByRef SubAuthorityVal2 As Integer, ByRef SubAuthorityVal3 As Integer, ByRef SubAuthorityVal4 As Integer, ByRef SubAuthorityVal5 As Integer, ByRef SubAuthorityVal6 As Integer, ByRef SubAuthorityVal7 As Integer) As Integer
    34.         Dim SubAuthorityCount As Integer = 0
    35.  
    36.         Try
    37.             SubKeyName = SubKeyName.Substring(SubKeyName.IndexOf("-") + 1)
    38.         Catch
    39.             Return SubAuthorityCount
    40.         End Try
    41.  
    42.         Try
    43.             SubKeyName = SubKeyName.Substring(SubKeyName.IndexOf("-") + 1)
    44.             SubAuthorityCount += 1
    45.         Catch
    46.             Return SubAuthorityCount
    47.         End Try
    48.  
    49.         Try
    50.             AuthorityVal = CInt(SubKeyName.Substring(0, myValue(SubKeyName.IndexOf("-"), SubKeyName.Length)))
    51.             SubAuthorityCount += 1
    52.             SubKeyName = SubKeyName.Substring(myValue2(SubKeyName.IndexOf("-") + 1))
    53.         Catch
    54.             Return SubAuthorityCount
    55.         End Try
    56.  
    57.         Try
    58.             SubAuthorityVal0 = CInt(SubKeyName.Substring(0, myValue(SubKeyName.IndexOf("-"), SubKeyName.Length)))
    59.             SubAuthorityCount += 1
    60.             SubKeyName = SubKeyName.Substring(myValue2(SubKeyName.IndexOf("-") + 1))
    61.         Catch
    62.             Return SubAuthorityCount
    63.         End Try
    64.  
    65.         Try
    66.             SubAuthorityVal1 = CInt(SubKeyName.Substring(0, myValue(SubKeyName.IndexOf("-"), SubKeyName.Length)))
    67.             SubAuthorityCount += 1
    68.             SubKeyName = SubKeyName.Substring(myValue2(SubKeyName.IndexOf("-") + 1))
    69.         Catch
    70.             Return SubAuthorityCount
    71.         End Try
    72.  
    73.         Try
    74.             SubAuthorityVal2 = CInt(SubKeyName.Substring(0, myValue(SubKeyName.IndexOf("-"), SubKeyName.Length)))
    75.             SubAuthorityCount += 1
    76.             SubKeyName = SubKeyName.Substring(myValue2(SubKeyName.IndexOf("-") + 1))
    77.         Catch
    78.             Return SubAuthorityCount
    79.         End Try
    80.  
    81.         Try
    82.             SubAuthorityVal3 = CInt(SubKeyName.Substring(0, myValue(SubKeyName.IndexOf("-"), SubKeyName.Length)))
    83.             SubAuthorityCount += 1
    84.             SubKeyName = SubKeyName.Substring(myValue2(SubKeyName.IndexOf("-") + 1))
    85.         Catch
    86.             Return SubAuthorityCount
    87.         End Try
    88.  
    89.         Try
    90.             SubAuthorityVal4 = CInt(SubKeyName.Substring(0, myValue(SubKeyName.IndexOf("-"), SubKeyName.Length)))
    91.             SubAuthorityCount += 1
    92.             SubKeyName = SubKeyName.Substring(myValue2(SubKeyName.IndexOf("-") + 1))
    93.         Catch
    94.             Return SubAuthorityCount
    95.         End Try
    96.  
    97.         Try
    98.             SubAuthorityVal5 = CInt(SubKeyName.Substring(0, myValue(SubKeyName.IndexOf("-"), SubKeyName.Length)))
    99.             SubAuthorityCount += 1
    100.             SubKeyName = SubKeyName.Substring(myValue2(SubKeyName.IndexOf("-") + 1))
    101.         Catch
    102.             Return SubAuthorityCount
    103.         End Try
    104.  
    105.         Try
    106.             SubAuthorityVal6 = CInt(SubKeyName.Substring(0, myValue(SubKeyName.IndexOf("-"), SubKeyName.Length)))
    107.             SubAuthorityCount += 1
    108.             SubKeyName = SubKeyName.Substring(myValue2(SubKeyName.IndexOf("-") + 1))
    109.         Catch
    110.             Return SubAuthorityCount
    111.         End Try
    112.  
    113.         Try
    114.             SubAuthorityVal7 = CInt(SubKeyName.Substring(0, myValue(SubKeyName.IndexOf("-"), SubKeyName.Length)))
    115.             SubAuthorityCount += 1
    116.             SubKeyName = SubKeyName.Substring(myValue2(SubKeyName.IndexOf("-") + 1))
    117.         Catch
    118.             Return SubAuthorityCount
    119.         End Try
    120.  
    121.         Return SubAuthorityCount
    122.  
    123.     End Function
    124.  
    125.     Public Function IsUserLoggedOn(ByVal UserNameToCheck As String) As Boolean
    126.         Dim i As Integer
    127.         Dim usersKey As Microsoft.Win32.RegistryKey
    128.         Dim ServerName As String = "\\MATT3011-SERVER"
    129.  
    130.         Dim SubAuthorityCount As Integer
    131.         Dim SubAuthorityVal() As Integer
    132.         Dim AuthorityVal As Integer
    133.         Dim authority As SID_IDENTIFIER_AUTHORITY
    134.         Dim sid As Integer
    135.         Dim UserNameSize As Integer
    136.         Dim DomainNameSize As Integer
    137.         Dim UserName As String
    138.         Dim DomainName As String
    139.         Dim sidType As Integer
    140.         Dim res As Integer
    141.  
    142.  
    143.         usersKey = Microsoft.Win32.RegistryKey.OpenRemoteBaseKey(Microsoft.Win32.RegistryHive.Users, ServerName)
    144.  
    145.  
    146.         For i = 0 To usersKey.SubKeyCount - 1
    147.             If usersKey.GetSubKeyNames(i).ToLower <> ".default" And usersKey.GetSubKeyNames(i).ToLower.IndexOf("classes") = -1 Then
    148.  
    149.                 'Initialize variables
    150.                 SubAuthorityCount = 0
    151.                 SubAuthorityVal = New Integer() {0, 0, 0, 0, 0, 0, 0, 0}
    152.                 AuthorityVal = 0
    153.                 Init_Sid_Authority(authority)
    154.                 sid = 0
    155.                 sidType = 0
    156.                 UserNameSize = 1024
    157.                 DomainNameSize = 1024
    158.                 UserName = New String(" ", UserNameSize)
    159.                 DomainName = New String(" ", DomainNameSize)
    160.  
    161.  
    162.                 SubAuthorityCount = swscanf(usersKey.GetSubKeyNames(i), AuthorityVal, SubAuthorityVal(0), SubAuthorityVal(1), SubAuthorityVal(2), SubAuthorityVal(3), SubAuthorityVal(4), SubAuthorityVal(5), SubAuthorityVal(6), SubAuthorityVal(7))
    163.  
    164.  
    165.  
    166.                 If SubAuthorityCount >= 3 Then
    167.                     SubAuthorityCount -= 2
    168.                     ReDim Preserve authority.Value(5)
    169.                     authority.Value(5) = AuthorityVal And &HFF
    170.                     authority.Value(4) = (AuthorityVal And &HFF00) / &HFF
    171.                     authority.Value(3) = (AuthorityVal And &HFF0000) / &HFFFF
    172.                     authority.Value(2) = (AuthorityVal And &HFF000000) / &HFFFFFF
    173.                     authority.Value(1) = 0
    174.                     authority.Value(0) = 0
    175.  
    176.                     If AllocateAndInitializeSid(authority, SubAuthorityCount, SubAuthorityVal(0), SubAuthorityVal(1), SubAuthorityVal(2), SubAuthorityVal(3), SubAuthorityVal(4), SubAuthorityVal(5), SubAuthorityVal(6), SubAuthorityVal(7), sid) Then
    177.                         If IsValidSid(sid) Then
    178.                             res = LookupAccountSid(ServerName, sid, UserName, UserNameSize, DomainName, DomainNameSize, sidType)
    179.  
    180.                             If res Then
    181.                                 MsgBox(DomainName.TrimEnd & "\" & UserName.TrimEnd)
    182.                             Else
    183.                                 MsgBox(GetLastError)
    184.                             End If
    185.                         End If
    186.                     End If
    187.                     If sid Then FreeSid(sid)
    188.                 End If
    189.  
    190.             End If
    191.         Next
    192.     End Function
    Last edited by matt3011; Oct 27th, 2004 at 03:41 AM.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  



Click Here to Expand Forum to Full Width