Comment puis-je obtenir le nom d'utilisateur du propriétaire du processus (l'utilisateur qui exécute mon programme) en C++?Comment puis-je obtenir le nom d'utilisateur de la personne qui exécute mon programme?
Répondre
de Windows
Exemple:
char user_name[UNLEN+1];
DWORD user_name_size = sizeof(user_name);
if (GetUserName(user_name, &user_name_size))
cout << "Your user name is: " << user_name << endl;
else
/* Handle error */
Linux
Regardez getpwuid:
La fonction getpwuid() recherchera dans la base de données utilisateur pour une entrée avec un uid correspondant .
La fonction getpwuid() renvoie un pointeur à une struct passwd
Le struct passwd
contiendra char *pw_name
.
Utilisez getuid
pour obtenir l'ID utilisateur.
Ceci est spécifique au système d'exploitation. Sous Windows, utilisez GetUserName. Sur unix, utilisez getuid.
La question porte sur le nom d'utilisateur local, et non le nom de l'ordinateur. –
Il s'agit du nom de la machine et non de l'utilisateur local/de l'utilisateur connecté. – BobbyShaftoe
La question initiale n'était pas claire. J'ai corrigé ma réponse. –
Ce n'est pas une question liée au C++. Vous pouvez trouver des informations (pas 100% sûr) dans les variables d'environnement lors de l'utilisation de systèmes UNIX. Vous pouvez également utiliser le programme 'id' sur ces systèmes.
En général, le moyen le plus rapide consiste à effectuer un appel noyau/API dépendant de la plateforme.
Sous Windows sous cmd.exe, la variable d'environnement USERNAME contient le nom d'utilisateur (qui est également informatif et non factuel). Rechercher dans la documentation WINAPI pour plus précis.
@Notinlist: que voulez-vous dire par là n'est pas une question liée au C++? Il utilise C++. Cela rend la question liée à C++. Peut-être que vous venez d'endroits où "lié à C++" signifie seulement C++ standard (tel que #[email protected]), mais ici sur SO c'est considéré très dans le sujet :) –
pour référence future, sur tous les systèmes (fenêtres incluses) vous pouvez taper: 'whoami' pour obtenir le nom d'utilisateur actuel. – chacham15
Sur Windows, un thread peut être usurpé, un processus ne peut pas. Pour obtenir le processus propriétaire, vous devez appeler GetTokenInformation avec le TokenUser infoclass sur votre jeton de processus, cela vous donnera un SID, ce SID peut être converti en un nom d'utilisateur avec LookupAccountSid. Si vous ne vous souciez pas de thread vs process, GetUserName() est bien.
Sur Mac OS X:
getenv("USER");
Sur Linux:
getenv("USERNAME");
- 1. Avec WMI: Comment obtenir le nom du compte utilisateur qui exécute mon programme?
- 2. En Java5, comment obtenir le nom complet de l'utilisateur qui exécute l'application?
- 3. Sur le site ASP.Net, comment obtenir le nom de l'utilisateur avec lequel la personne est connectée?
- 4. Programme d'installation Mac qui exécute un script
- 5. impossible d'exécuter le programme java qui exécute les commandes weka
- 6. Programme d'âge de la personne en pascal
- 7. Obtenir ce que OS Bit Computer exécute
- 8. Comment rechercher LDAP par nom de personne?
- 9. Comment obtenir par programme le nom du cookie de session?
- 10. comment obtenir le nom de fichier .app par programme?
- 11. Obtenir le nom de la cible (ou le nom de l'icône) dans mon code
- 12. Quel noyau exécute mon processus?
- 13. obtenir la somme de chaque personne par le PersonID
- 14. Comment obtenir le nom de la classe
- 15. choisir le nom d'une personne avec le plus petits-enfants
- 16. comment puis-je obtenir par programme le nom d'une application?
- 17. Comment obtenir le nom de mon programme dans la liste du menu contextuel de n'importe quel fichier
- 18. Recherche de nom de personne/traduction
- 19. EnvDTE.Expression - Obtenir le nom interne de DataMembers programme
- 20. comment puis-je obtenir l'email de la personne authentifiée?
- 21. Comment obtenir la version du produit pour mon programme Silverlight?
- 22. C++: Obtenir le nom du processus exécutant mon application
- 23. Comment obtenir les informations WHOIS d'un nom de domaine dans mon programme?
- 24. Comment puis-je créer une application console qui me permet d'entrer des expressions LINQ et que mon programme les exécute?
- 25. Trace ce qui exécute la fonction
- 26. Comment obtenir le nom de variable en utilisant la réflexion?
- 27. SqlHelper.ExecuteReader Fonction qui exécute une procédure stockée
- 28. comment obtenir le chaque mot qui a la valeur maximale en utilisant le programme java
- 29. Comment obtenir le nom du propriétaire actuel?
- 30. Comment puis-je obtenir l'adresse IP de mon programme serveur?
Si vous voulez coder en dur une taille de tampon, utilisez 257 (UNLEN + 1) c'est la taille maximale documentée pour un nom d'utilisateur sur Windows – Anders