Подтвердить что ты не робот

Получить текущее имя пользователя в С++ в Windows

Я пытаюсь создать программу, которая извлекает текущее имя пользователя пользователя в Windows с помощью С++.

Я пробовал это:

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

Ничего не выводится, кроме "Username:".

Каков самый простой и лучший способ получить текущее имя пользователя?

4b9b3361

Ответ 1

Используйте функцию Win32API GetUserName. Пример:

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

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

Ответ 3

Исправленный код, который работал у меня:

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

Я использую Visual Studio Express 2012 (в Windows 7), возможно, он работает одинаково с Dev-Cpp

Ответ 4

Работает:

#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";
}

Ответ 5

Вы должны использовать переменную env USERNAME.