Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Залогинился юзер или нет. [D7, WinXP]


Страницы:   1 2

kolos_rus ©   (2005-11-24 11:37:00) 

Как в своем сервисе определить, залогинился юзер или нет?


Ботвин Дмитрий   (2005-11-29 16:01:00) [21]

Вот так пробуй:

LMSTR = LPWSTR;
NET_API_STATUS = DWORD;
 
function NetWkstaUserEnum(servername: LMSTR;  level: DWORD;
   var bufptr: Pointer;  prefmaxlen: DWORD; var entriesread: DWORD;
   var totalentries: DWORD; var resumehandle: DWORD): NET_API_STATUS;
   stdcall; external 'netapi32.dll' name 'NetWkstaUserEnum';

function NetApiBufferFree(buffer: Pointer): Cardinal; stdcall; external 'netapi32.dll';

function _GetUserName: String;
 type THostInfo = record wkui0_username: PWideChar; end;
 var
   Info: Pointer;
   ElTotal,ElCount,Resume: DWord;
   HostInfo: THostInfo;
 begin
   Resume:=DWord(0);
   Info:=nil;
   NetWkstaUserEnum(nil,0,Info,64,ElCount,ElTotal,Resume);
   if Info<>nil then
     try
       HostInfo:=THostInfo(info^);
       Result:=Trim(HostInfo.wkui0_username);
     except
       Result:='Не залогинелся...';
     end
   else Result:='Не залогинелся...';
   NetApiBufferFree(Info);
 end;


kolos_rus   (2005-11-29 13:29:00) [22]


> Это что, шутка? Какой тут может быть пример?! Просто вызвать
> функцию без параметров и проверить результат, все!

Вообщето меня интересовала функция NetWkstaUserEnum.
Что же касательно WTSGetActiveConsoleSessionId то что я там могу получить?
Она возвращает числа, все время разные, что они означают.
Я думал, что пока юэер не залогинился будет 0, ничего подобного.
Может пояснишь?
Прежде, чем что-то советовать, да еще в такой форме попробуй сам.
Кстати вышивать не пробовал?


Набережных С.   (2005-11-28 13:27:00) [23]


> kolos_rus ©   (28.11.05 11:28) [6]
>
> > Набережных С. ©   (24.11.05 13:26) [5]
> > WTSGetActiveConsoleSessionId
>
> По описанию в MSDN очень похоже.
> Сколько не пытался заставить работать не получилось.
> Может у кого готовый пример есть?

Это что, шутка? Какой тут может быть пример?! Просто вызвать функцию без параметров и проверить результат, все!

Слушай, может ну его нафик, это программирование? Вон, вышивание крестиком - очень хорошее занятие...


kolos_rus   (2005-11-28 11:33:00) [24]

Извиниясь, не тот ответ подхватил.

> Ботвин Дмитрий   (24.11.05 12:56) [4]
> Смотри NetWkstaUserEnum с первым параметром nil. Вернет
> залогиненного юзера на твоем компе в переданную структуру
> WKSTA_USER_INFO_0 или
> пустое значение, если юзер не вошел в систему. Вроде так.
> ..
> <Цитата>

По этой функции пример надо.


kolos_rus   (2005-11-28 11:28:00) [25]


> Набережных С. ©   (24.11.05 13:26) [5]
> WTSGetActiveConsoleSessionId

По описанию в MSDN очень похоже.
Сколько не пытался заставить работать не получилось.
Может у кого готовый пример есть?


Набережных С.   (2005-11-24 13:26:00) [26]

WTSGetActiveConsoleSessionId


Ботвин Дмитрий   (2005-11-24 12:56:00) [27]

Смотри NetWkstaUserEnum с первым параметром nil. Вернет залогиненного юзера на твоем компе в переданную структуру WKSTA_USER_INFO_0 или
пустое значение, если юзер не вошел в систему. Вроде так...


kolos_rus   (2005-11-24 12:51:00) [28]

Не помогло. Возвращает имя пользователя под которым запущен процесс, а системный процесс запущен от имени SYSTEM, вот его и возвращает.


AbrosimovA   (2005-11-24 12:24:00) [29]

Попробуй GetUserName. В этом случае однозначно можно сказать вошёл или не вошёл, а также - кто вошёл.


kolos_rus   (2005-11-24 11:54:00) [30]

Может не совсем верно выразился. Вопрос такой: осуществлен ли вход в систему.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо