Func _getAccountInfo($user = "") AutoItSetOption ("ExpandEnvStrings", 1) Local $wbemFlagReturnImmediately = 0x10 Local $wbemFlagForwardOnly = 0x20 Local $filter = "" Local $accounts[1][6] ; $account[0][0] = Name ; $account[0][1] = Description ; $account[0][2] = SID ; $account[0][3] = Disabled ; $account[0][4] = ProfilePath ; $account[0][5] = LastAccess If $user <> "" Then $filter = " AND Name = '" & $user & "'" Local $query = 'SELECT * FROM Win32_UserAccount WHERE domain = "' & @ComputerName & '"' & $filter Local $objWMIService = ObjGet("winmgmts:\\" & @ComputerName & "\root\CIMV2") Local $colItems = $objWMIService.ExecQuery($query, "WQL", $wbemFlagReturnImmediately + $wbemFlagForwardOnly) If IsObj($colItems) Then Local $n = 0 For $objItem In $colItems ReDim $accounts[$n + 1][6] $accounts[$n][0] = $objItem.Name $accounts[$n][1] = $objItem.Description $accounts[$n][2] = $objItem.SID $accounts[$n][3] = $objItem.Disabled $accounts[$n][4] = RegRead("HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\" & $objItem.SID, "ProfileImagePath") $accounts[$n][5] = FileGetTime ( $accounts[$n][4] & "\ntuser.dat" , 0 , 1 ) $n += 1 Next EndIf Return $accounts EndFunc ; ====> _getAccountInfo() Func _getComputerSID() Local $wbemFlagReturnImmediately = 0x10 Local $wbemFlagForwardOnly = 0x20 Local $query = 'SELECT * FROM Win32_UserAccount WHERE domain = "' & @ComputerName & '"' Local $objWMIService = ObjGet("winmgmts:\\" & @ComputerName & "\root\CIMV2") Local $colItems = $objWMIService.ExecQuery($query, "WQL", $wbemFlagReturnImmediately + $wbemFlagForwardOnly) $computerSID = "" If IsObj($colItems) Then For $objItem In $colItems $SID = $objItem.SID If StringRegExp($SID, "\AS-\d*-\d*-\d*-\d*-\d*-\d*-\d*\Z") Then $computerSID = StringRegExpReplace($SID, "-\d*\Z", "") ExitLoop EndIf Next EndIf Return $computerSID EndFunc Func _getProfilInfo() Dim $profils[1][5] AutoItSetOption ("ExpandEnvStrings", 1) ; $profils[0][0] = Name ; $profils[0][1] = Description ; $profils[0][2] = SID ; $profils[0][3] = ProfilePath ; $profils[0][4] = LastAccess $i = 0 $n = 0 While 1 $i += 1 $sid = RegEnumKey("HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList", $i) If @error Then ExitLoop If StringLen($sid) > 10 Then $path = RegRead ("HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\" & $sid, "ProfileImagePath" ) If $path <> "" AND FileExists($path) Then $n += 1 Redim $profils[$n][5] $profils[$n - 1][2] = $sid $profils[$n - 1][3] = $path ; $profils[$n - 1][4] = FileGetTime ( $path & "\ntuser.dat" , 0 , 1 ) $infos = _SIDToName($sid) If StringInStr($infos, ";") Then $split = StringSplit($infos, ";") $profils[$n - 1][0] = $split[1] $profils[$n - 1][1] = $split[2] EndIf EndIf EndIf WEnd Return $profils EndFunc Func _SIDToName($sid) Local $objWMIService = ObjGet("winmgmts:\\" & @ComputerName & "\root\cimv2") Local $objAccount = $objWMIService.Get("Win32_SID.SID='" & $sid & "'") If IsObj($objAccount) Then Return $objAccount.AccountName Return 0 EndFunc