Récupérer le SID de l'utilisateur courant

Résolu
Korb3ns Messages postés 10 Date d'inscription dimanche 12 février 2006 Statut Membre Dernière intervention 2 décembre 2007 - 6 nov. 2007 à 16:08
Korb3ns Messages postés 10 Date d'inscription dimanche 12 février 2006 Statut Membre Dernière intervention 2 décembre 2007 - 12 nov. 2007 à 19:40
Bonjour à tous,

je cherche à récupérer le SID de l'utilisateur courant...

Est-ce qu'il existe une fonction Windows permettant de récupérer la valeur sans avoir à parcourir le registre ?

Je sais qu'on peut trouver sa valeur à l'adresse suivante : HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\

J'ai déjà tenté d'implémenter différents codes trouvé sur le site MSDN ainsi que la fonction CopySid() mais je n'obtient pas de SID...

Merci d'avance pour votre aide !

8 réponses

Korb3ns Messages postés 10 Date d'inscription dimanche 12 février 2006 Statut Membre Dernière intervention 2 décembre 2007
6 nov. 2007 à 18:18
Salut juju12,

Merci beaucoup pour la rapidité de ta réponse...

Je n'ai malheureusement pas le temps d'essayer LookupAccountName avant jeudi matin, je validerais ta réponse dès que possible...
0
Korb3ns Messages postés 10 Date d'inscription dimanche 12 février 2006 Statut Membre Dernière intervention 2 décembre 2007
8 nov. 2007 à 00:58
Merci pour ton aide juju12,






effectivement la fonction LookupAccountName permet la récupération du SID...






Je n'ai pas réussi à convertir ma structure SID en string, après de nombreux essais et recherche sur Internet, je n'ai pas réussi à trouver les fonctions ConvertSidToStringSid() et GetTextualSid() (j'ai pourtant ajouté les déclarations dans mon fichier header ainsi que la librairie advapi32)...






Du coup je vais utiliser le numéro de série du disque dur, qui est bien plus facile à obtenir...






Et le résultat est le même, j'obtiens un ID unique, je le couple juste avec le nom d'utilisateur afin de pouvoir différencier chaque session...






Merci pour ton aide !






Bonne soirée !
0
cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 4
8 nov. 2007 à 17:07
Ben ConvertSidToStringSid le header est sddl.h et la lib advapi32.lib effectivement.
GetTextualSid par contre m'a pas l'air d'être une API; un coup d'oeil sur le net, elle est à chaque fois implémentée. Peut-être sous vista...en tous cas pas dans le SDK 2003.

Mais bon si t'as autre chose qui marche tant mieux.
0
Korb3ns Messages postés 10 Date d'inscription dimanche 12 février 2006 Statut Membre Dernière intervention 2 décembre 2007
8 nov. 2007 à 17:25
J'ai pourtant inclu sddl.h dans le header de ma classe et ajouté la librairie advapi32.dll, pourtant Visual Studio n'avait pas l'air de connaître cette méthode...

Vu que je dois bientôt rendre mon projet, et compte tenu du fait que j'ai encore pas mal de travail à faire, je n'ai pas le temps de m'étaler trop longtemps sur ce problème...

Oui je passe par le numéro de série du disque dur, mais j'ai quand même une question :

Pour le moment j'ai mit en dur la lettre logique du disque dur, mais comme il est possible d'installer Windows sur n'importe quel partition, il se peut que C: soit un lecteur de carte où autre...

Il y a un moyen de trouver la lettre logique d'un disque dur (sans toute les parcourir) ?

Pour le moment je l'ai implémenté de la manière suivante :





DWORD numeroSerie;





GetVolumeInformation( "c:\", 0, 0, &numeroSerie, 0, 0, 0, 0 );
0

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

Posez votre question
cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 4
9 nov. 2007 à 20:35
Tu  peux peut-être utiliser GetLogicalDriveStrings. Sinon un simple GetModuleFileName et tu prends le début de la chaîne retourné.
0
cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 4
9 nov. 2007 à 20:36
retournée
0
Korb3ns Messages postés 10 Date d'inscription dimanche 12 février 2006 Statut Membre Dernière intervention 2 décembre 2007
12 nov. 2007 à 19:40
Merci pour tes conseils !

Dans le même style d'idée que toi je vais me servir de la variable d'environnement HOMEDRIVE qui me retourne directement le chemin du disque principal (C: dans mon cas)...

Merci beaucoup pour ton aide, bonne soirée !
0
cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 4
6 nov. 2007 à 18:03
Essaie LookupAccountName, cette fonction renvoie le SID du compte spécifié; cf MSDN ou SDK pour plus d'infos...
-2
Rejoignez-nous