Page 1 sur 1
[R] Liste de tous les utilisateurs
Posté : ven. 23 janv. 2015 13:41
par TomAijerrie
Bonjour,
Je cherche une fonction qui permet de faire :
- une liste de tous les utilisateur d'un poste
- une liste de tous les utilisateur réseau
- différencier les administrateurs des autres (Avec IsAdmin() ou autre)
Cette fonction existe-elle ?
J'ai un compte admin sur le poste local mais simple utilisateur pour le réseau.
Merci d'avance
Re: [..] Liste de tous les utilisateurs
Posté : ven. 23 janv. 2015 13:50
par DimVar
Bonjour,
Pour les infos du User, je ne vois pas de fonction dediée.
Je passerai par une "net user" sous DOS.
IsAdmin vous permet juste de savoir si oui ou non, le user courant a les droits admin. Contrairement à "net user".
Cdlt, Dimvar.
Re: [..] Liste de tous les utilisateurs
Posté : ven. 23 janv. 2015 13:58
par TomAijerrie
Merci pour cette réponse si rapide
Quelle commande DOS faut-il faire ?
Re: [..] Liste de tous les utilisateurs
Posté : ven. 23 janv. 2015 13:59
par Hugues
Salut,
Ca ne répond pas pour la question "Utilisateur réseau", mais pour lister les Users d'un poste et leur privilège, j'ai trouvé ça:
► Afficher le texte
Code : Tout sélectionner
#include <Array.au3>
$Users = _SystemUsers(0)
_ArrayDisplay($Users)
#cs ===============================================================================
Function: _SystemUsers($AccountType = 0)
Description: Return an array with the local or domain username
Parameter(s): $AccountType: Local, domain or both username
0 = Local and Domain usernames
1 = Local usernames only
2 = Domain usernames only
Returns: An array with the list of usernames - Succeeded
@error 1 - Didn't query any username
@error 2 - Failed to create Win32_SystemUsers object
@error 3 - Invalid $AccountType
Author(s): Danny35d
#ce ===============================================================================
Func _SystemUsers($AccountType = 0)
Local $aSystemUsers
Local $wbemFlagReturnImmediately = 0x10, $wbemFlagForwardOnly = 0x20
Local $colItems = "", $strComputer = "localhost"
If Not StringRegExp($AccountType, '[012]') Then Return SetError(3, 3, '')
$objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
$colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_SystemUsers", "WQL", _
$wbemFlagReturnImmediately + $wbemFlagForwardOnly)
If IsObj($colItems) Then
For $objItem In $colItems
$Output = StringSplit($objItem.PartComponent, ',')
If IsArray($Output) Then
$Temp = StringReplace(StringTrimLeft($Output[2], StringInStr($Output[2], '=', 0, -1)), '"', '')
If $AccountType = 0 Or ($AccountType = 1 And @ComputerName = $Temp) Then
$aSystemUsers &= StringReplace(StringTrimLeft($Output[1], StringInStr($Output[1], '=', 0, -1)), '"', '') & '|'
ElseIf $AccountType = 2 And @ComputerName <> $Temp Then
$aSystemUsers &= StringReplace(StringTrimLeft($Output[1], StringInStr($Output[1], '=', 0, -1)), '"', '') & '|'
EndIf
EndIf
Next
$aSystemUsers = StringTrimRight($aSystemUsers, 1)
If $aSystemUsers = '' Then Return(SetError(1, 1, $aSystemUsers))
Return(SetError(0, 0, StringSplit($aSystemUsers, '|')))
Else
$aSystemUsers = ''
Return(SetError(2, 2, $aSystemUsers))
EndIf
EndFunc ;==>_SystemUsers
Re: [..] Liste de tous les utilisateurs
Posté : ven. 23 janv. 2015 14:10
par DimVar
TomAijerrie a écrit :Merci pour cette réponse si rapide
Quelle commande DOS faut-il faire ?
Euh, "net user"...
Re: [..] Liste de tous les utilisateurs
Posté : ven. 23 janv. 2015 14:14
par Y01
Bonjour,
Pour être un peu plus précis :
Pour la liste des users: "net user > users.txt".
pour la liste des groupes: "net group > groupes.txt".
pour le contenu des groupes: "net group toto > groupe_toto.txt", toto étant le nom d'un groupe.
Si tu as des groupes locaux: "net localgroup".
Re: [..] Liste de tous les utilisateurs
Posté : ven. 23 janv. 2015 14:15
par DimVar
Hugues a écrit :Salut,...
...mais pour lister les Users d'un poste et leur privilège, j'ai trouvé ça:
Sans avoir analysé cette fonction, elle retourne les users deja connectés sur le poste. (et non les users definis actifs/inactif)
Voir les dossiers dans "c:\users\".
Cdlt, Dimvar.
Re: [..] Liste de tous les utilisateurs
Posté : ven. 23 janv. 2015 14:58
par jguinch
Pour les comptes et groupes locaux, voir cet UDF :
http://www.autoitscript.com/forum/topic ... count-udf/
Qu'est-ce que tu appelles des "utilisateurs réseau" ? Des comptes AD ? Dans ce cas tu as l'UDF Active Directory
Re: [..] Liste de tous les utilisateurs
Posté : lun. 26 janv. 2015 09:57
par TomAijerrie
jguinch a écrit :Qu'est-ce que tu appelles des "utilisateurs réseau" ?
Au démarrage de l'ordinateur, on peut se connecter soit sur une session locale, soit sur une session réseau ( NOMDEDOMAINE/USER )
Je teste vos solutions dès que j'ai le temps.
Re: [..] Liste de tous les utilisateurs
Posté : lun. 26 janv. 2015 10:31
par Y01
Utilisateur réseau = Utilisateurs du domaine
Une requête de l'AD permet de les connaitre.
Re: [..] Liste de tous les utilisateurs
Posté : lun. 26 janv. 2015 11:28
par jguinch
En fait tu veux récupérer quoi exactement ?
La liste des utilisateurs qui ont déjà ouvert une session sur le poste ?
Edit : je te poste une petite fonction que j'utilise régulièrement, ça peut t'intéresser
► Afficher le texte
Code : Tout sélectionner
#include <Security.au3>
#include <Array.au3>
$aProfiles = _GetUserProfileList()
_ArrayDisplay($aProfiles)
; #FUNCTION# ====================================================================================================================
; Name ..........: _GetUserProfileList
; Description ...: Returns an array containing the users profiles
; Syntax ........: _GetUserProfileList()
; Parameters ....: None
; Return values .: A 2D array :
; $aArray[0][0] - Number of profiles
; $aArray[1][0] - 1st domain\username of the account associated to the profile
; $aArray[1][1] - 1st profile path
; $aArray[1][2] - 1st user SID
; $aArray[n][0] - nth username
; ...
; Author ........: jguinch
; ===============================================================================================================================
Func _GetUserProfileList()
Local $sKey = "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList"
Local $iCount = 0, $sSubKey, $sProfileImagePath, $aAccountInfos
Local $aReturn[1][3]
While 1
$iCount += 1
$sSubKey = RegEnumKey($sKey, $iCount)
If @error Then ExitLoop
If StringRegExp($sSubKey, "(?i)S-1-5-21-(\d+-){3}\d+") Then
$sProfileImagePath = StringReplace( _ExpandEnvStrings ( RegRead($sKey & "\" & $sSubKey, "ProfileImagePath") ), "::", ":")
If FileExists($sProfileImagePath) Then
Redim $aReturn[ UBound($aReturn) + 1][3]
$aAccountInfos = _Security__LookupAccountSid($sSubKey)
If IsArray($aAccountInfos) Then $aReturn[ UBound($aReturn) - 1][0] = $aAccountInfos[1] & "\" & $aAccountInfos[0]
$aReturn[ UBound($aReturn) - 1][1] = $sProfileImagePath
$aReturn[ UBound($aReturn) - 1][2] = $sSubKey
EndIf
EndIf
WEnd
$aReturn[0][0] = UBound($aReturn) - 1
Return $aReturn
EndFunc ; ===> _GetUserProfileList
Func _ExpandEnvStrings($sString)
Local $aVars = StringRegExp($sString, "%([^%]+)%", 3)
Local $iCount = 0
If IsArray($aVars) Then
For $i = 0 To UBound($aVars) - 1
$sVal = EnvGet($aVars[$i])
If $sVal <> "" Then
$sString = StringReplace($sString, "%" & $aVars[$i] & "%", $sVal )
$iCount += 1
EndIf
Next
SetExtended( $iCount )
Else
SetExtended(0)
EndIf
Return $sString
EndFunc
Re: [..] Liste de tous les utilisateurs
Posté : lun. 26 janv. 2015 12:55
par TomAijerrie
Exactement ça serai pour changer certains droits d’accès et d'écriture pour des dossier (que j'ai créé) sur des disques réseau communs, pour certains utilisateurs que je sélectionnerai dans une liste.
Je trouve cela un peu long à faire manuellement.
Re: [..] Liste de tous les utilisateurs
Posté : lun. 26 janv. 2015 13:25
par jguinch
Du coup il te manque quoi ?
Re: [R] Liste de tous les utilisateurs
Posté : mar. 27 janv. 2015 11:44
par TomAijerrie
C'est bon, j'ai tout.
J'ai juste eu un peu de mal à relier toutes ces informations.
Résolu
Merci