21

C++ を使用して、Windows で現在のユーザーのユーザー名を取得するプログラムを作成しようとしています。

私はこれを試しました:

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

「Username:」以外は何も出力されません。

現在のユーザー名を取得する最も簡単で最良の方法は何ですか?

4

7 に答える 7

55

Win32APIGetUserName関数を使用します。例:

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

char username[UNLEN+1];
DWORD username_len = UNLEN+1;
GetUserName(username, &username_len);
于 2012-07-20T21:57:45.590 に答える
9

私のために働いた修正されたコード:

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

Visual Studio Express 2012 (Windows 7) を使用していますが、Dev-Cpp でも同じように動作する可能性があります。

于 2013-07-31T14:02:32.643 に答える
5

Windowsでは、USERNAME環境変数またはGetUserName関数を使用します

于 2012-07-20T21:58:01.797 に答える
5

できます:

#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";
}
于 2014-05-23T12:22:20.490 に答える
-2

環境変数USERNAMEを使用する必要があります。

于 2012-07-20T22:08:17.637 に答える