Obtenir le Nom de l'Ordinateur et le nom de l'utilisateur connecté
Je suis du développement d'une application. L'une des méthodes a besoin de saisir le nom de l'ordinateur et de l'utilisateur connecté à la machine, puis de les afficher à la fois pour l'utilisateur. J'en ai besoin pour s'exécuter sur Windows et Linux. Quelle est la meilleure façon de le faire?
Une autre chose à considérer. Si l'utilisateur exécute l'application sur le Windows Terminal Server, qui de deux ordinateurs nom qu'il a à faire?
OriginalL'auteur Mrdk | 2015-01-13
Vous devez vous connecter pour publier un commentaire.
Windows
Vous pouvez essayer d'utiliser
GetComputerName
etGetUserName
, voici un exemple:voir: GetComputerName
et GetUserName
Linux
Utilisation
gethostname
pour obtenir le nom de l'ordinateur(voir gethostname), etgetlogin_r
pour obtenir identifiant de connexion. Vous pouvez rechercher plus d'informations à page de manuel de getlogin_r.Simple d'utilisation comme suit:
32 KO? Vous avez seulement besoin exactement MAX_COMPUTERNAME_LENGTH+1 caractères... vu le premier est à seulement 15, 32 KO est un géant des déchets...
OriginalL'auteur pezy
Dans Windows de l'environnement, vous pouvez utiliser
getenv("COMPUTERNAME")
,getenv("USERNAME")
Dans Linux -
getenv("HOSTNAME")
,getenv("USER")
Voir la fonction getenv de référence
OriginalL'auteur Denis Itskovich
Sur les systèmes POSIX, vous pouvez utiliser le
gethostname
etgetlogin
fonctions, à la fois déclarée dansunistd.h
.De sortie possibles:
Cela semble plus sûr que de compter sur les variables d'environnement qui ne sont pas toujours présents.Je suis le retrait de cette dernière affirmation, car
getlogin
fait décourage son utilisation en faveur degetenv("LOGIN")
etgetlogin_r
appel dans le programme ci-dessus échoue avecENOTTY
quand je lance le programme à partir de l'intérieur d'Emacs à la place d'une borne interactive tout engetenv("USER")
aurait travaillé dans les deux situations.OriginalL'auteur 5gon12eder
Si vous pouvez utiliser Boost, vous pouvez le faire facilement obtenir le nom de l'hôte:
Est-il une fonction "Boost" pour obtenir le nom de connexion à la place?
OriginalL'auteur Vivit
Utilisation
gethostname()
pour obtenir le nom de l'ordinateur, le soutien à la fois windows et linux.OriginalL'auteur Keven
Concernant Denis réponse, notez que
getenv("HOSTNAME")
pour Linux ne fonctionne pas toujours parce que les variables d'environnement ne peuvent être exportés vers le programme.Multi-plate-forme de C++ exemple de code pour récupérer juste le nom de l'ordinateur (c'est ce qui a fonctionné pour mon Win7 et CentOS machines):
OriginalL'auteur Keith M