Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.12.12;
Скачать: CL | DM;

Вниз

узнать время начала сессии пользователя..   Найти похожие ветки 

 
istok   (2010-09-20 11:00) [0]

как узнать время логона юзера?  (gettickcount возвращает время старта винды а не сессии...)


 
12 ©   (2010-09-20 11:13) [1]

LsaGetLogonSessionData


 
istok   (2010-09-20 15:19) [2]

спасибо,
никак не могу получить LogonId: PLUID, не хочется делать полную энумирацию, если у меня уже есть sessionid - его в LogonId никак не конвертнуть?


 
12 ©   (2010-09-20 16:01) [3]


> если у меня уже есть sessionid

откуда и как взялось?


> его в LogonId никак не конвертнуть?

формально совпадает если - прочему бы и нет :)


 
12 ©   (2010-09-20 16:16) [4]

не могу найти пример уже, наверное погиб смертью храбрых при смене компа

JEDI можно раскопать/погуглить, там как -то проще все это описано/импортировано было, что-то нужно было как-то сделать и не составило труда, помнится


 
istok   (2010-09-20 17:10) [5]

с LogonId разобрался, заюзал всё же enum...

но вот незадача - как sessionData.LogonTime прочитать...     т.е. я понимаю что .QuadPart это int64.. но  как это дело в tdatetime превратить правильно?


 
sniknik ©   (2010-09-20 17:47) [6]

> но  как это дело в tdatetime превратить правильно?
что значит "превратить правильно"? один 64бита, другой 64 бита... простое привидение типа, туда обратно значение не испортит ("превратит" и "разпревратит"), но разве ж это правильно?

посмотри в док, что за значение эта переменная представляет, тогда уж и будешь думать как преобразовать.


 
12 ©   (2010-09-20 17:48) [7]

да, по-хитрому, поищите в конфе борланда, кто-то писал


 
istok   (2010-09-20 18:22) [8]

сделал.. через filetime:

  ft: TFileTime;
  st: TSystemTime;
  dt: TDateTime;

...
                 ft.dwLowDateTime := sessionData.LogonTime.LowPart;
                 ft.dwHighDateTime := sessionData.LogonTime.HighPart;

                 FileTimeToSystemTime(ft, st);
                 dt := EncodeDateTime(st.wYear, st.wMonth, st.wDay, st.wHour, st.wMinute, st.wSecond, st.wMilliseconds);


только время показывает на 4 часа раньше чем надо) а у меня gmt+3...


 
sniknik ©   (2010-09-20 19:44) [9]

> только время показывает на 4 часа раньше чем надо) а у меня gmt+3...
ты, что время с момента логина юзера по Гринвичу считаешь??? при чем тут это?

типа пришел на работу и залогинился 10 мин назад, но по Гринвичу... проработал уже 3 ч. 10 мин. .... клево.


 
istok   (2010-09-20 19:51) [10]

а кто сказал что я по гринвичу считаю..   я просто говорю что полученное время отстает от реального на 4 часа. и к сведению сообщаю что моя зона  - gmt+3 (мало ли, вдруг скажете что у меня наверно gmt+4 и надо 4 прибавлять..)


 
Anatoly Podgoretsky ©   (2010-09-20 19:54) [11]

> istok  (20.09.2010 19:51:10)  [10]

Для информации
В мире кроме часового пояса еще есть и летнее время.


 
istok   (2010-09-20 19:56) [12]

о, а каким методом стабильно конвертить это время в своё локальное?


 
istok   (2010-09-20 21:29) [13]

вопрос решен, всем спасибо):

function GMTToLocalTime(GMTTime: TDateTime): TDateTime;
var
 GMTST: Windows.TSystemTime;
 LocalST: Windows.TSystemTime;
begin
  SysUtils.DateTimeToSystemTime(GMTTime, GMTST);
  SysUtils.Win32Check(Windows.SystemTimeToTzSpecificLocalTime(nil, GMTST, LocalST));
  Result := SysUtils.SystemTimeToDateTime(LocalST);
end;


 
Anatoly Podgoretsky ©   (2010-09-21 09:30) [14]

> istok  (20.09.2010 19:56:12)  [12]

Из справки!

UTC = local time + bias



Страницы: 1 вся ветка

Текущий архив: 2010.12.12;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.011 c
2-1284042092
ZV
2010-09-09 18:21
2010.12.12
TServerSocket, как узнать IP клиента при подключении.


2-1284816023
KuJIoBaT
2010-09-18 17:20
2010.12.12
ValueListEditor


8-1208178513
DoKi
2008-04-14 17:08
2010.12.12
карты нормалей


2-1284466539
faiwer
2010-09-14 16:15
2010.12.12
Горячие клавиши


15-1283783209
ocean
2010-09-06 18:26
2010.12.12
Wifi