Форум: "WinAPI";
Текущий архив: 2003.03.06;
Скачать: [xml.tar.bz2];
ВнизОпределение имени пользователя из сервиса... Найти похожие ветки
← →
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 вся ветка
Форум: "WinAPI";
Текущий архив: 2003.03.06;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.017 c