Re: hook in service

From
Alex Fedotov ()
To
Demid ()
Date
2001-07-03T23:44:13Z
Area
SU.WINDOWS.NT.PROG
From: "Alex Fedotov" <alexf@3cube.com>

Demid wrote:

> > Чтобы сервис работал на интерактивной станции, его нужно создавать с
> > флагом SERVICE_INTERACTIVE_PROCESS или явным образом присоединить его к
> > WinSta0 с помощью SetProcessWindowStation. Кроме того, нужно установить
> > десктоп

> Я опять в эту проблему встряну. Экспериментировал я с этими WinSta0,
> и обнаружил, что на терминал-сервере WinSta0 - это всегда Window Station
> из которой процесс запущен. Т.е. запущен с одного терминала - его Window
> station для этого процесса имеет имя WinSta0, запущен с другого -
> аналогично. Запущен с консоли - WinSta0 "указывает" на консольную Window
> station.

Да, это известное поведение. Terminal services поддерживает несколько
пространств имен для объектов ядра. Это все разные window station, которые,
хотя и называются одинаково, находятся в разных пространствах имен. Чтобы
получить handle к нужной window station, (насколько я понимаю) нужно
имперсонировать пользователя, связанного с соответствующей сессией, на время
вызова OpenWindowStation.

> Попробовать, куда он присоединится из сервиса, руки не дошли, наверное на
> консоль.

Если никого не имперсонировать, то определенно на консоль. А если
имперсонировать -- пробовать надо, тоже руки никак не доходят. Ну ничего,
скоро XP выйдет, тогда уж мне этим хочешь-не хочешь придется заниматься.

--
Alex Fedotov


Отправлено через сервер Talk.Ru - http://www.talk.ru
--- ifmail v.2.15dev5
 * Origin: 3Cube, Inc. (www.3cube.com) (2:5020/400)