Как я могу получить имя пользователя человека, выполняющего мою программу?

Как я могу получить имя пользователя владельца процесса (пользователь, который выполняет мою программу) в C++?

11
задан Thomas Bonini 3 February 2010 в 06:05
поделиться

4 ответа

Windows

GetUsername ()

Пример:

 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

Посмотрите GetPWUID :

Функция GetPWUID () должна поискать База данных пользователей для записи с Соответствие UID.

Функция GetPWUID () должна вернуть Указатель на структуру Passwd

Passwd будет содержать CHAR * PW_NAME .

Используйте GetUID , чтобы получить идентификатор пользователя.

29
ответ дан 3 December 2019 в 02:30
поделиться

Это специфично для операционной системы. В окнах, используйте GetUsername . На Unix используйте Getuid .

1
ответ дан 3 December 2019 в 02:30
поделиться

Это не вопрос, связанный с C ++. Вы можете найти информацию (не на 100%) в переменных среды при использовании UNIX-подобных систем. Вы также можете использовать программу id в этих системах.

В общем, самый быстрый способ - это сделать платформенно-зависимый вызов ядра / API.

В Windows под cmd.exe переменная среды USERNAME содержит имя пользователя (которое также является информационным, а не фактическим). Поищите точную информацию в документации WINAPI.

0
ответ дан 3 December 2019 в 02:30
поделиться

На окнах можно изобразить резьбу, а процесс - нет. Чтобы получить владельца процесса , необходимо вызвать GetTokenInformation с информационным классом TokenUser на токене вашего процесса, это даст вам SID, этот SID может быть преобразован в имя пользователя с помощью LookupAccountSid. Если вас не волнует нить против процесса, то функция GetUserName() в порядке.

1
ответ дан 3 December 2019 в 02:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: