Liste des utilisateurs windows

belgarion_ Messages postés 7 Date d'inscription lundi 27 octobre 2003 Statut Membre Dernière intervention 7 juillet 2004 - 6 juil. 2004 à 19:16
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 - 7 juil. 2004 à 20:34
-----------------------------
| [b]Belgarion[b/] |
-----------------------------

Bonjour a tous,

suite à des recherches infructueuses sur le forum et dans le site, j'aimerai savoir s'il existe une API pour lister tous les comptes utilisateurs présents sur une machine XP ou 2000.
Je sais qu'on peut trouver cela dans la base de registre alors je vais chercher dans cette direction mais si qq'un a une solution, merci de m'en faire part.

Merci

10 réponses

cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
6 juil. 2004 à 20:01
Salut,

G pas de réponse toute faite now car je n'ai XP qu'au boulot.
Mais tu peux peut-être chercher du côté tout bête de c:\documents & settings (enfin, vérifie l'orthographe, je l'ai pas en tête). Là dedans, il se crée un dossier par utilisateur.

Cordialement

CanisLupus
0
belgarion_ Messages postés 7 Date d'inscription lundi 27 octobre 2003 Statut Membre Dernière intervention 7 juillet 2004
6 juil. 2004 à 20:50
-----------------------------
| [b]Belgarion[b/] |
-----------------------------

bonjour CanisLupus

c'est en effet ce que j'ai pensé faire...mais je ne trouve pas ça très propre...enfin ptet qu'on ne pense pas à la même chose...

shell "dir /b > c:\listusers.txt"

ensuite j'ouvre le fichier et extrait chaque ligne...

voilà, si tu as mieux, je suis preneur biensur ;)

Merci et à bientôt.
0
belgarion_ Messages postés 7 Date d'inscription lundi 27 octobre 2003 Statut Membre Dernière intervention 7 juillet 2004
6 juil. 2004 à 20:54
-----------------------------
| [b]Belgarion[b/] |
-----------------------------

re ...

dsl, la commande c'est plutôt ça :

Shell "dir /b %SYSTEMDRIVE%\DOCUME~1 > c:\listusers", vbHide

j'avais oublié un bout :S

à +.
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
6 juil. 2004 à 21:22
G une info, on peut voir la liste des users ds la registry :

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\SpecialAccounts\UserList

mais je suppose que tu le sais déjà.

Pour l'instant, g pas trouvé d'api toute faite. G juste une tite idée du côté des APIs regenumkeyex et regenumvalue, tu peux trouver des ex à cette adresse :

http://www.mentalis.org/apilist/r.shtml

Dis moi si ça te convient, g pas encore testé sur de l'xp.

Cordialement

CanisLupus
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
belgarion_ Messages postés 7 Date d'inscription lundi 27 octobre 2003 Statut Membre Dernière intervention 7 juillet 2004
7 juil. 2004 à 10:33
-----------------------------
| [b]Belgarion[b/] |
-----------------------------

re bjr :D

bon...après une dure soirée de débogage, j'ai 1 bouts de code qui me donne toujours la même erreur : fichier introuvable
j'ai essayé plein de changements, ça ne marche tjrs pas. pourtant ma commande s'exécute bien dans une console.

***************************************
res = Shell("dir /b """c:\Documents and Settings""" > c:\listusers.txt", vbHide)
Do While Not (Dir("c:\listusers.txt") <> "")
Loop
Open "c:\listusers.txt" For Input As #1
Do Until EOF(1)
Line Input #1, temp
TabUser(i) = temp
i = i + 1
Loop
Close #1
***************************************

sinon, je n'ai pas la clé que tu cite dans ma registry (j'ai un Win 2000); j'ai créé un user avec un nom bien spécial et en recherchant cette chaine ds la registry, je n'ai rien trouvé d'intéressant...alors j'ai abandonné cette piste.

je vais maintenant tester la fonction Dir() de VB, ptet que j'aurai plus de chance...

à bientot.
0
belgarion_ Messages postés 7 Date d'inscription lundi 27 octobre 2003 Statut Membre Dernière intervention 7 juillet 2004
7 juil. 2004 à 12:11
-----------------------------
| [b]Belgarion[b/] |
-----------------------------

snif...mon code fonctionne pour d'autres dossiers sur mon lecteur E: par exemple....le problème peut donc venir des autorisations ou droits sur les dossiers ou fichiers. Cependant, bienque les droits du dossiers "Documents and Settings" soient particuliers, tous les utilisateurs disposent du droit de lister le répertoire...donc l'erreur viens peut être d'ailleurs (tout comme la vérité ;) )
bon ça ne fais pas avancer le schmilblik tout ça...
je me demande quelle exe de commande en ligne est utilisé par VB : est-ce cmd.exe(NT 2000 et XP) ou command.com(Win 9x) étant donné que les 2 sont présents sur un Win XP ou 2K...

bon je continue a creuser...j'espère que ça n'est pas ma tombe ke je creuse ;)

à+
0
belgarion_ Messages postés 7 Date d'inscription lundi 27 octobre 2003 Statut Membre Dernière intervention 7 juillet 2004
7 juil. 2004 à 13:59
-----------------------------
| [b]Belgarion[b/] |
-----------------------------

me revoilou !

après d'autre tests, je comprends de moins en moins...désolé.
j'ai tout de même réussi à faire ce que je voulais grâce à un batch généré par le code et exécuté par la commande Shell...

*********************************************
Public Function fctListusers() As Integer
Dim temp As String
Dim command As String, command2 As String
Dim res
'préparation de la chaine de caractère
'attention aux pb de guillements ..
'(pb d'espaces dans DOS pour les chemins)
command = "dir /b " & """c:\Documents and Settings""" & " > c:\listuser.txt"
command2 = "echo ok > c:\ok.txt"
'génération du fichier batch
Open "c:\list.bat" For Append As #1
Print #1, command
Print #1, command2
Close #1
'exécution de la commande
res = Shell("c:\list.bat", vbHide)
'boucle pour attendre que la commande soit finie
Do While Not (Dir("c:\ok.txt") <> "")
'...
Loop
'lecture du fichier et affichage ds LisBox
Open "c:\listuser.txt" For Input As #1
Do Until EOF(1)
Line Input #1, temp
frmMain.List1.AddItem temp
Loop
Close #1
End Function
*************************************************

Le code fonctionne sur mon Win 2000 et j'en pleurerai presque de joie tellement il m'a doné du fil à retordre...enfin bon g vu pire aussi lol

allez à bientôt tout le monde et merci à toi CanisLupus pour ton aide.
0
capoueidiablo Messages postés 316 Date d'inscription jeudi 9 janvier 2003 Statut Membre Dernière intervention 1 février 2010 1
7 juil. 2004 à 15:46
J'etait entreint de cherché l'équivalent sans utilisé de batch et hop j'ai trouvé ca dans les MSDN c'est plus simple qu'un batch je pence ;) essaille

Private Sub EnumDossier()
MyPath = "c:\Documents and Settings"   ' Définit le chemin d'accès.
MyName = Dir(MyPath, vbDirectory)   ' Extrait la première entrée.
Do While MyName <> ""   ' Commence la boucle.
   ' Ignore le dossier courant et le dossier
   ' contenant le dossier courant.
   If MyName <> "." And MyName <> ".." Then
      ' Utilise une comparaison au niveau du bit pour
      ' vérifier que MyName est un dossier.
      If (GetAttr(MyPath & MyName) _
         And vbDirectory) = vbDirectory Then
         Debug.Print MyName   ' Affiche l'entrée uniquement si elle représente un dossier.
      End If   
   End If
   MyName = Dir   ' Extrait l'entrée suivante.
Loop
End Sub


Sous WinXP ca tourne niquel si ca marche pas essaille de changer le nom de répertoire MyPath et si ca remarche toujours pas je me pencherai plus serieusement sur ton cas ;)
--Capoueidiablo--
0
belgarion_ Messages postés 7 Date d'inscription lundi 27 octobre 2003 Statut Membre Dernière intervention 7 juillet 2004
7 juil. 2004 à 16:35
-----------------------------
| [b]Belgarion[b/] |
-----------------------------

Elo Capoueidiablo !

je suis abasourdi :(

j'ai aussi testé ta méthode Dir hier comme je l'ai spécifié dans un post plus haut...et même en y passant presque 1 heure, j'ai rien pu faire...et là je colle le même truc (g vérifié c mot pour mot la meme chose) et bah là après une tite modif ça march nikel
c'est à n'y rien comprendre...
enfin bon, c'est cool, cette méthode est tout de même bien meilleure, je te remercie de ton aide :D

Ciao !
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
7 juil. 2004 à 20:34
Pas mieux,
Ce que je t'ai indiqué +haut n'a pas fonctionné en XP. Mais g pas eu trop de temps de voir où se trouve le bug.
Finalement, la méthode de <capoueidiablo> est bonne. Le seul prob, comme en XP, c que même si l'user ne se reconnecte plus, son dossier existe encore. Va ptet falloir faire un controle aussi sur une date de modif d'un fichier ou +sieurs fichiers de ce dossier.
Il faut aussi que j'approfondisse la question car je dois gérer un parc qui comprend de plus en plus d'XP.

Cordialement

CanisLupus
0
Rejoignez-nous