Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt Общие вопросы _ Функции определения учетной записи и папки учетной записи

Автор: AD 20.3.2009, 9:35

Есть ли в Qt функции определения имени компьютера, учетной записи? А также функции определения папки нахождения профиля учетной записи?

Автор: ViGOur 20.3.2009, 9:37

Думаю, что нет.
Нужно делать индивидуально для каждой ОС.

Автор: AD 20.3.2009, 9:56

Цитата(ViGOur @ 20.3.2009, 9:37) *
Думаю, что нет.
Нужно делать индивидуально для каждой ОС.

Да ладно, неужели нет функции определения названия учетной записи, хотя бы? :blink: :blink: :blink:

Очень и очень нужно.....

О, кое-что нашел! :)
Цитата
QString QDir::homePath () [static]
Returns the absolute path of the user's home directory.
Under Windows this function will return the directory of the current user's profile. Typically, this is:
C:/Documents and Settings/Username
Use the toNativeSeparators() function to convert the separators to the ones that are appropriate for the underlying operating system.
If the directory of the current user's profile does not exist or cannot be retrieved, the following alternatives will be checked (in the given order) until an existing and available path is found:
The path specified by the USERPROFILE environment variable.
The path formed by concatenating the HOMEDRIVE and HOMEPATH environment variables.
The path specified by the HOME environment variable.
The path returned by the rootPath() function (which uses the SystemDrive environment variable)
The C:/ directory.
Under non-Windows operating systems the HOME environment variable is used if it exists, otherwise the path returned by the rootPath() function is used.


А есть функции, которые позволяют узнать именно имя учетной записи? А то придется извлекать из пути, который вернет эта функция.

Автор: kwisp 20.3.2009, 10:20

придется getenv(const char*) использовать. но это не совсем верный путь.

Автор: AD 20.3.2009, 10:54

Цитата(kwisp @ 20.3.2009, 10:20) *
придется getenv(const char*) использовать. но это не совсем верный путь.

Зачем и что надо передавать в параметре?

Автор: kwisp 20.3.2009, 11:05

getenv("USERNAME") для винды
getenv("USER") для линукса.

но редупреждаю это не совсем верный способ. потому что имя берется не из процесса короче это не эффективный uid. а так просто переменная окружения текущая точно так же можно брать HOME PATH и т.д. и т.п.
возвращает const char*

Автор: AD 20.3.2009, 11:37

Компилятор подсказал более современную функцию.
_dupenv_s(char** PUserName, sizet_t* PSizeUsr, const char* user_name);

Автор: kwisp 20.3.2009, 11:39

AD,
что за компилятор и кросплатформенна ли эта функция???

Автор: AD 20.3.2009, 11:40

Цитата(kwisp @ 20.3.2009, 11:39) *
AD,
что за компилятор и кросплатформенна ли эта функция???

Visual Studio 2005! Не знаю на счет кроссплатформенности. В данном приложении это неважно!

Автор: SABROG 20.3.2009, 11:40

У Qt есть кроссплатформенные варианты qgetenv()/qsetenv(). Но о них не написано в документации, т.ч. на свой страх.

Автор: kwisp 20.3.2009, 11:44

Цитата(SABROG @ 20.3.2009, 11:40) *
Но о них не написано в документации, т.ч. на свой страх.

вот это уже интересно.
я по исходникам рыл - не нашел.

видно криво искал есть такое дело.

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)