![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Пара вопросов по учетным записям и процессам [D7, WinXP]
Blasphemie © (2008-12-21 18:47:00)Доброе время суток!
Есть несколько вопросов по учетным записям и процессам в ХР/2003:
При нескольких локально залогиненных в системе юзерах (Fast User switching) - как узнать ID активного юзера? Т.е., того, чей десктоп сейчас активен.
Как узнать "хозяина процесса", т.е. от имени какого юзера он запущен?
И еще вопрос: как отловить событие "fast user switchung" не в момент Lock Windows, а в момент, когда юзер становится активным, т.е. переключается на свой десктоп?
kami (2008-12-30 17:40:00) [1]> [2] Ляпа (30.12.08 15:43)
Не совсем то.
afair, GetActiveConsoleSessionID возвратит ID первого локально залогинившегося пользователя. Что при FUS будет не совсем правильно.
function GetProcessUserInformation(ProcessId: DWORD;
var UserName, Domain: string; var SIDName: SID_NAME_USE): Boolean;
//(C) вроде И.Ш. (не помню точно, но не мое)
var
TokenSid: PSID;
begin
Result := false;
if not GetProcessTokenSid(ProcessId, TokenSid) then
Exit;
try
Result := GetSidInfo(nil, TokenSid, UserName, Domain, SIDName);
finally
ReallocMem(TokenSid, 0);
end;
end;
Чуть посмотрев по MSDN:
для обычного приложения - использовать WTSRegisterSessionNotification.
для сервиса - HandlerEx.
И вроде будет счастье.
Ляпа (2008-12-30 15:43:00) [2]http://forum.sources.ru/index.php?showtopic=243190&hl=
?
Psycho (2008-12-25 23:34:00) [3]неужели никто не знает?.. мне это тоже интересно