web-dev-qa-db-fra.com

Obtenir le nom d'utilisateur actuel en C ++ sur Windows

J'essaie de créer un programme qui récupère le nom d'utilisateur de l'utilisateur actuel sous Windows à l'aide de C++.

J'ai essayé ceci:

char *userName = getenv("LOGNAME");
stringstream ss;
string userNameString;
ss << userName;
ss >> userNameString;
cout << "Username: " << userNameString << endl;

Rien n'est sorti sauf "Nom d'utilisateur:".

Quelle est la façon la plus simple et la meilleure d'obtenir le nom d'utilisateur actuel?

16
Andrew

Utilisez la fonction Win32API GetUserName . Exemple:

#include <windows.h>
#include <Lmcons.h>

char username[UNLEN+1];
DWORD username_len = UNLEN+1;
GetUserName(username, &username_len);
43
orlp

Code corrigé qui fonctionnait pour moi:

TCHAR username[UNLEN + 1];
DWORD size = UNLEN + 1;
GetUserName((TCHAR*)username, &size);

J'utilise Visual Studio Express 2012 (sur Windows 7), peut-être que cela fonctionne de la même manière avec Dev-Cpp

5
jyz

Sous Windows, utilisez la variable d'environnement [~ # ~] [~ # ~] ou la fonction GetUserName

4
parapura rajkumar

Ça marche:

#include <iostream>
using namespace std; 

#include <windows.h>
#include <Lmcons.h>

int main()
{
TCHAR name [ UNLEN + 1 ];
DWORD size = UNLEN + 1;

if (GetUserName( (TCHAR*)name, &size ))
wcout << L"Hello, " << name << L"!\n";
else
cout << "Hello, unnamed person!\n";
}
2
Anna Eurich