Comment puis-je obtenir le nom d'utilisateur du propriétaire de processus (l'utilisateur qui exécute mon programme) en C ++? P>
5 Réponses :
Ceci est spécifique au système d'exploitation. Sous Windows, utilisez Getansername . Sur UNIX, utilisez GETUID . P>
La question concerne le nom d'utilisateur local, pas le nom de l'ordinateur.
Ceci est le nom de la machine NON utilisateur local / enregistré sur l'utilisateur.
getansername () a > p> Exemple: p> regarder GetPwuid : P> La fonction getPwuid () doit rechercher
la base de données utilisateur pour une entrée avec un
Assortiment UID. P>
la fonction getPwuid () doit retourner un
pointeur sur une structure passwd p>
blockQuote> le Utilisez
linux h1>
struct passwd code> contiendra char * pw_name code>. p> getuid code> pour obtenir l'utilisateur id. p> h1>
Si vous souhaitez coder une taille de mémoire tampon, utilisez 257 (sans précédent + 1) Il s'agit de la taille maximale documentée pour un nom d'utilisateur sous Windows.
Ce n'est pas une question connexe C ++. Vous pouvez trouver des informations (pas sûres à 100%) dans les variables d'environnement lors de l'utilisation de systèmes de type Unix. Vous pouvez également utiliser le programme 'ID' sur ces systèmes. P>
En général, le moyen le plus rapide est de créer un appel de noyau / API dépendant de la plate-forme. P>
sur Windows sous cmd.exe La variable d'environnement nom d'utilisateur contient le nom d'utilisateur (qui est également informatif non factuel). Recherche dans la documentation Winapi pour précision. P>
@Notinlist: Que voulez-vous dire que ce n'est pas une question connexe C ++? Il utilise c ++. Cela rend la question C ++ liée. Peut-être que vous venez d'endroits où "C ++ associé" ne signifie que la standard C ++ (telle que #c++@irc.freenode.net), mais ici, ceci est donc considéré comme très sujet :)
Pour une référence future, sur tous les systèmes (Windows inclus), vous pouvez taper: whoami code> pour obtenir le nom d'utilisateur actuel.
sur Windows, un thread peut être imitée, un processus ne peut pas. Pour obtenir le processus
sur Mac OSX:
getenv("USERNAME");