Программно найти имя пользователя в C ++? - PullRequest
1 голос
/ 14 января 2012

Я создаю небольшое приложение, которое облегчает некоторые задачи в MS Word. Приложение должно быть импортировано в Word как макрос, это означает, что оно должно храниться в какой-то папке шаблонов, которая находится под пользователем. Поэтому я не хочу узнать, как узнать , как зовут пользователя , и какова версия windows , потому что мое имя пользователя и местоположение папки не совпадают с кем-то еще. Есть ли какой-нибудь маленький код летучей мыши или какая-то функция в c ++, которая может просто взять эти две информации и сохранить их в переменной, которую я могу легко использовать при установке приложения?

ОС: Win7, Vista, XP

Ответы [ 3 ]

5 голосов
/ 14 января 2012

Чтобы получить имя пользователя, вы используете функцию GetUserName () .

Однако это не лучший способ определить местоположение папки текущего пользователя. Для этого используйте что-то вроде SHGetSpecialFolderPath () или SHGetFolderPath () , вместо которого можно указать путь к специальной папке (такой как папка приложения пользователя, его рабочий стол и т. Д.)

4 голосов
/ 14 января 2012

Вы можете получить каталог профиля пользователя, позвонив по номеру SHGetFolderPath(CSIDL_PROFILE) (Win2K и более поздние версии) или SHGetKnownFolderPath(FOLDERID_Profile) (Vista и более поздние версии).

Вы можете получить прямой путь к папке шаблонов, используя SHGetFolderPath(CSIDL_TEMPLATES) (Windows 2000 и более поздние версии) или SHGetKnownFolderPath(FOLDERID_Templates) (Vista и более поздние версии).

Полагаю, что после того, как вы получили папку с шаблонами, вам не нужно имя пользователя или версия ОС.

0 голосов
/ 28 июня 2016

Используйте это:

void UserName(string *x){
char username[UNLEN + 1];
DWORD size = UNLEN + 1;
GetUserName(username, &size);
string transition(username);
*x=transition;}
//use this syntax in main : string username;UserName(&username);
...