Как я могу получить имя пользователя владельца процесса (пользователь, который выполняет мою программу) в C++?
Пример:
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 */
Посмотрите GetPWUID :
Функция GetPWUID () должна поискать База данных пользователей для записи с Соответствие UID.
Функция GetPWUID () должна вернуть Указатель на структуру Passwd
Passwd
будет содержать CHAR * PW_NAME
.
Используйте GetUID
, чтобы получить идентификатор пользователя.
Это специфично для операционной системы. В окнах, используйте GetUsername . На Unix используйте Getuid .
Это не вопрос, связанный с C ++. Вы можете найти информацию (не на 100%) в переменных среды при использовании UNIX-подобных систем. Вы также можете использовать программу id в этих системах.
В общем, самый быстрый способ - это сделать платформенно-зависимый вызов ядра / API.
В Windows под cmd.exe переменная среды USERNAME содержит имя пользователя (которое также является информационным, а не фактическим). Поищите точную информацию в документации WINAPI.
На окнах можно изобразить резьбу, а процесс - нет. Чтобы получить владельца процесса , необходимо вызвать GetTokenInformation с информационным классом TokenUser на токене вашего процесса, это даст вам SID, этот SID может быть преобразован в имя пользователя с помощью LookupAccountSid. Если вас не волнует нить против процесса, то функция GetUserName() в порядке.