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)