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

Вниз

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

 
Eugene ©   (2003-01-17 18:10) [0]

Есть необходимость определить имя пользователя (который сейчас залогинился (если вообще кто-то залогинился)) из сервиса, который автоматически запускается при старте Win2k и загружается как SYSTEM.
Если из Сервиса запустить GetUserName то возвращает имя SYSTEM.
Заранее благодарен.


 
Eugene ©   (2003-01-17 23:50) [1]

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


 
SeF ©   (2003-01-18 01:11) [2]

function TKiller.GetLoggedUserName(var progs:tstringlist):string;
var
hProc : THandle;
hToken : THandle;
User : array [0..100] of Char;
cbUser,dwPid : Cardinal;
i:integer;
begin
i:=0;
Result:="system";
while i <st.Count do
begin
dwPid:=cardinal(st.Objects[i]);
hProc:=OpenProcess(PROCESS_ALL_ACCESS,false,dwPid);
if hProc <> 0 then
begin

if OpenProcessToken(hProc,TOKEN_DUPLICATE or TOKEN_QUERY ,hToken)
then
begin

if ImpersonateLoggedOnUser(hToken)
then
begin
// С этого момента код будет выполняться в
// Контексте пользователя, под которым запущен
// процесс c PID = dwPID
cbUser:=100;
GetUserName(User,cbUser);

RevertToSelf;
Result:=lowercase(user);
if result <>"system"
then <Мой код>;
end;
closehandle(hToken);
end;
end;
inc(i);
closehandle(hProc);
end;
end;


 
Eugene ©   (2003-01-18 12:16) [3]

> SeF
Вопрос по теме: А как можно узнать что кто-то залогинился, ведь сервисы загружаются до сразу после старта винды, а если пользователь просто включил комп и пошел курить. Я слышал что-то про beginLogon но точно не помню.


 
neodiX ©   (2003-01-18 14:42) [4]

я думаю можно проверять есть ли окно "progman", если есть значит юзер залогился если нет значит не залогился


 
Eugene ©   (2003-01-18 15:03) [5]

Странно, но неужели нет какой-то конкретной функции. По моему поиск по окнам должен умереть вместе с 98 виндой.


 
neodiX ©   (2003-01-18 15:21) [6]

sorry, но я такой не знаю, притом поиск progman легко реализуется, по"тому я считаю не стоит теперь тратить кучу времени на поиск чего то нового. Но если у тебя куча времени то вперед :)



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

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

Наверх




Память: 0.48 MB
Время: 0.017 c
1-17035
Odil
2003-02-25 08:12
2003.03.06
Как подключить внешний файл, так чтоб прога мог показать вам лист


4-17438
Vasily Terekhov
2003-01-18 08:59
2003.03.06
Shell хук и раскладка клавиатуры...


3-16965
Ditrix
2003-02-17 13:28
2003.03.06
SQL запрос на выявление дублей ID


4-17445
skovorodka
2003-01-18 19:05
2003.03.06
SetWindowsHookEx( всем пойматься и ответить :) )


1-17182
som
2003-02-24 11:24
2003.03.06
StringGrid & QReport