Récupérer le SID de l'utilisateur courant [Résolu]

Signaler
Messages postés
10
Date d'inscription
dimanche 12 février 2006
Statut
Membre
Dernière intervention
2 décembre 2007
-
Messages postés
10
Date d'inscription
dimanche 12 février 2006
Statut
Membre
Dernière intervention
2 décembre 2007
-
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

Messages postés
10
Date d'inscription
dimanche 12 février 2006
Statut
Membre
Dernière intervention
2 décembre 2007

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...
Messages postés
10
Date d'inscription
dimanche 12 février 2006
Statut
Membre
Dernière intervention
2 décembre 2007

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 !
Messages postés
966
Date d'inscription
samedi 3 avril 2004
Statut
Membre
Dernière intervention
4 mars 2010
4
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.
Messages postés
10
Date d'inscription
dimanche 12 février 2006
Statut
Membre
Dernière intervention
2 décembre 2007

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 );
Messages postés
966
Date d'inscription
samedi 3 avril 2004
Statut
Membre
Dernière intervention
4 mars 2010
4
Tu  peux peut-être utiliser GetLogicalDriveStrings. Sinon un simple GetModuleFileName et tu prends le début de la chaîne retourné.
Messages postés
966
Date d'inscription
samedi 3 avril 2004
Statut
Membre
Dernière intervention
4 mars 2010
4
retournée
Messages postés
10
Date d'inscription
dimanche 12 février 2006
Statut
Membre
Dernière intervention
2 décembre 2007

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 !
Messages postés
966
Date d'inscription
samedi 3 avril 2004
Statut
Membre
Dernière intervention
4 mars 2010
4
Essaie LookupAccountName, cette fonction renvoie le SID du compte spécifié; cf MSDN ou SDK pour plus d'infos...