[R] Lister les comptes locaux d'une machine

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Yindoo
Niveau 1
Niveau 1
Messages : 11
Enregistré le : mar. 29 janv. 2008 09:08
Status : Hors ligne

[R] Lister les comptes locaux d'une machine

#1

Message par Yindoo »

Bon voilà mon problème, je voudrais lister afin de pouvoir les supprimer, les comptes locaux d'une machine fonctionnant sous XP pro... je sais qu'on devrait pouvoir y avoir accès via ObjGet mais comment ??? si quelqu'un a un debut de solution, merci d'avance
Avatar du membre
sylvanie
Niveau 11
Niveau 11
Messages : 1556
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

Re: [..] lister les comptes locaux d'une machine

#2

Message par sylvanie »

au plus simple, je redirigerai la comande net user vers un fivhier via :

Code : Tout sélectionner

run(@comspec& ' /c net user > users.txt',@workingdir,@sw_hide)
et j'utiliserai le log.
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11791
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] lister les comptes locaux d'une machine

#3

Message par Tlem »

J'ai essayé en récupèrant les infos du Net Use, mais il faut en plus convertir en Ansi, sinon ça ne donne pas le résultat escompter !

Sinon, j'ai trouvé un bout de code qui donnais le nom de l'administrateur, et en le modifiant un peut, ça me crée un tableau, avec le nom de chaque utilisateur.

Code : Tout sélectionner

#include <Array.au3>

$Users = GetUsersName()
_ArrayDisplay($Users,"Liste des utilisateurs")

Func GetUsersName()
    Local $UsersName
    Dim $UserSID, $oWshNetwork, $oUserAccount
    $objWMIService = objGet( "winmgmts:{impersonationLevel=impersonate}!//"  & @ComputerName & "/root/cimv2")
    $oUserAccounts = $objWMIService.ExecQuery("Select Name, SID from Win32_UserAccount WHERE Domain = '" & @ComputerName & "'")
    For $oUserAccount In $oUserAccounts
        $UsersName &= $oUserAccount.Name & "|"
    Next
    Return StringSplit(StringLeft($UsersName, StringLen($UsersName)-1), "|")
EndFunc
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
arrkhan
Niveau 8
Niveau 8
Messages : 528
Enregistré le : sam. 17 nov. 2007 03:30
Status : Hors ligne

Re: [..] lister les comptes locaux d'une machine

#4

Message par arrkhan »

cette Wmi peut te donner de nombreuses infos:

Code : Tout sélectionner

#include<guiconstants.au3>
dim $Output
$strComputer = "localhost"
$Output = $Output & "Computer: " & $strComputer & @CRLF
$Output = $Output & " == == == == == == == == == == == == == == == == == == == == == " & @CRLF
$objWMIService = ObjGet ( "winmgmts:\\" & $strComputer & "\root\CIMV2" )
$colItems = $objWMIService.ExecQuery ( "SELECT * FROM Win32_UserAccount" , "WQL" )
For $objItem In $colItems
$Output = $Output & "Caption: " & $objItem.Caption & @CRLF
$Output = $Output & "Description: " & $objItem.Description & @CRLF
$Output = $Output & "Disabled: " & $objItem.Disabled & @CRLF
$Output = $Output & "Domain: " & $objItem.Domain & @CRLF
$Output = $Output & "FullName: " & $objItem.FullName & @CRLF
$Output = $Output & "Name: " & $objItem.Name & @CRLF
$Output = $Output & "PasswordChangeable: " & $objItem.PasswordChangeable & @CRLF
$Output = $Output & "PasswordExpires: " & $objItem.PasswordExpires & @CRLF
$Output = $Output & "PasswordRequired: " & $objItem.PasswordRequired & @CRLF
$Output = $Output & "SID: " & $objItem.SID & @CRLF
$Output = $Output & "Status: " & $objItem.Status & @CRLF & @crlf
Next
GUICreate ( "" , 400 , 400 , - 1 , - 1 , $WS_overlappedwindow )
GUICtrlCreateEdit ( $Output , 10 , 10 , 380 , 380 , $ws_vscroll )
GUISetState ( @SW_SHOW )
While 1
$msg = guigetmsg ( )
if $msg = - 3 then ExitLoop
sleep ( 10 )
WEnd
esperant que ca reponde a ta question.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11791
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] lister les comptes locaux d'une machine

#5

Message par Tlem »

@arrkhan : Yindoo demandait de lister les comptes utilisateurs, et non le détail de chaque compte.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
arrkhan
Niveau 8
Niveau 8
Messages : 528
Enregistré le : sam. 17 nov. 2007 03:30
Status : Hors ligne

Re: [..] lister les comptes locaux d'une machine

#6

Message par arrkhan »

ah ouais ^^

mais la .SID peut egalement etre pratique pour supprimer les cle correspondate aux compte supprimes
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11791
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] lister les comptes locaux d'une machine

#7

Message par Tlem »

Il suffisait donc d'indiquer les éléments qui pouvaient être rajouter au code précédent.
Liste des éléments :

Code : Tout sélectionner

$oUserAccount.Caption
$oUserAccount.Description
$oUserAccount.Disabled
$oUserAccount.Domain
$oUserAccount.FullName
$oUserAccount.Name
$oUserAccount.PasswordChangeable
$oUserAccount.PasswordExpires
$oUserAccount.PasswordRequired
$oUserAccount.SID
$oUserAccount.Status
 
Ou plus simplement si c'était pour la SID, de modifier le code comme ceci :

Code : Tout sélectionner

    For $oUserAccount In $oUserAccounts
        $UsersName &= $oUserAccount.Name & "#" & $oUserAccount.SID & "|"
    Next
 
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Répondre