Russian Qt Forum

Qt => Общие вопросы => Тема начата: shender от Август 02, 2010, 11:31



Название: список юзеров ОС
Отправлено: shender от Август 02, 2010, 11:31
День добрый. Такой вопрос, возможно ли средствами qt узнать список пользователей ОС, и из под какого пользователя запущено приложение? В какую степь копать? Спасибо.


Название: Re: список юзеров ОС
Отправлено: kuzulis от Август 02, 2010, 11:44
Это все платформозависимые вещи.

Поищите в гугле, может кто-то уже создал такой класс... Если не найдете - то придется вам самим его реализовывать.

Имхо, в *.nix для получения списка пользователей, групп и т.п. придется использовать системные бинарики (они во всех никсах имеются) которые выводят эту информацию в консоль. Например, посмотрите как реализованы такие вещи как KUser и т.п. (Для KDE, GNOM и т.п.). В винде  - наверное WinApi нужно использовать, хотя, может быть, аналогично никсам можно использовать какие-нить екзешки для этого.  
--

Еще имхо - лучше всего подсмотреть как это сделано в KDE, т.к. для него есть сборки для *.nix и Windows!


Название: Re: список юзеров ОС
Отправлено: pastor от Август 02, 2010, 11:48
Поищи на форуме, уже подобный вопрос был


Название: Re: список юзеров ОС
Отправлено: kuzulis от Август 02, 2010, 11:51
Вот, может поможет: http://websvn.kde.org/trunk/KDE/kdeadmin/kuser/


Название: Re: список юзеров ОС
Отправлено: asvil от Август 02, 2010, 16:18
Получения имени текущего полльзователя. Используется как обертка для QtScript функции. Проверено на следующих ОС: winxpsp3, ubuntu9.10.
Код:
// Crosplatform getUserName function
#ifdef Q_WS_WIN
#include <windows.h>
#include <lmcons.h>
#elif defined Q_WS_X11
#include <pwd.h>
#endif //#ifdef Q_WS_WIN

QScriptValue getLoginWrapper(QScriptContext* context, QScriptEngine* engine)
{
  QString userName;
#ifdef Q_WS_WIN
  WCHAR* lpszSystemInfo; // pointer to system information
  DWORD cchBuff = 256; // size of user name
  WCHAR tchBuffer[UNLEN + 1]; // buffer for expanded string

  lpszSystemInfo = tchBuffer;

  // Get and display the user name.
  GetUserNameW(lpszSystemInfo, &cchBuff);

  //Unicode string needs to be converted
  userName = QString::fromWCharArray(lpszSystemInfo);
#elif defined Q_WS_X11
  register struct passwd *pw;
  pw = getpwuid(getuid());
  if (pw)
    userName = pw->pw_name;
#endif //#ifdef Q_WS_WIN

  return userName;
}


Название: Re: список юзеров ОС
Отправлено: shender от Август 03, 2010, 12:54
Спасибо. Буду копать