Page 1 sur 1
[R] Lister les comptes locaux d'une machine
Posté : mar. 05 févr. 2008 18:09
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
Re: [..] lister les comptes locaux d'une machine
Posté : mar. 05 févr. 2008 20:56
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.
Re: [..] lister les comptes locaux d'une machine
Posté : mer. 06 févr. 2008 01:26
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
Re: [..] lister les comptes locaux d'une machine
Posté : mer. 06 févr. 2008 18:30
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.
Re: [..] lister les comptes locaux d'une machine
Posté : mer. 06 févr. 2008 21:44
par Tlem
@arrkhan : Yindoo demandait de lister les comptes utilisateurs, et non le détail de chaque compte.
Re: [..] lister les comptes locaux d'une machine
Posté : jeu. 07 févr. 2008 02:01
par arrkhan
ah ouais ^^
mais la .SID peut egalement etre pratique pour supprimer les cle correspondate aux compte supprimes
Re: [..] lister les comptes locaux d'une machine
Posté : jeu. 07 févr. 2008 07:43
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