Форум: "Основная";
Текущий архив: 2006.10.01;
Скачать: [xml.tar.bz2];
Внизнужно запустить процесс под сессиями юзеров terminal services Найти похожие ветки
← →
Makhanev Alexander (2006-08-21 13:20) [0]Есть win2003 server на котором развернуты windows terminal services.
Есть служба, работающая на том же сервере.
Нужно сделать так, чтобы служба могла запустить процесс под всеми существующими сессиями пользователей terminal services без relogon"а пользователя.
Пока копаю в сторону CreateProcessAsUser и получение токенов активных юзеров через LogonUser...
Может кто-то поджскажет, является ли этот путь действенным и единственным?
Буду благодарен за помощь.
← →
Makhanev Alexander (2006-08-21 20:29) [1]может кто-то поможет?
← →
Leonid Troyanovsky © (2006-08-21 21:00) [2]
> Makhanev Alexander (21.08.06 13:20)
> Нужно сделать так, чтобы служба могла запустить процесс
> под всеми существующими сессиями пользователей terminal
> services без relogon"а пользователя.
Пардон, а почему оное надо делать именно сервису,
а не к.-л. логон-скрипту, или вульгарному автостарту?
--
Regards, LVT.
← →
Ketmar © (2006-08-21 21:13) [3]мой телепатор подозревает, что это что-то вроде шедулера или мессенджера? так?
← →
DiamondShark © (2006-08-21 21:49) [4]Что значит "под всеми существующими сессиями"?
Это чтобы окошки у пользователей видны были? Если да, то в структуреSTARTUPINFO
есть полеlpDesktop
, в котором можно указать имя десктопа, к которому привязать процесс, в формате windowstationname\desktpname.
Для каждой терминальной сессии существует отделная window station.
Пишу чисто умозрительно, т.к. серверной операционки под рукой нет, проверить, как всё это будет работать не могу.
← →
Чапаев © (2006-08-21 22:42) [5]Да... В MSDN ещё преогромный пример есть на использование LogonUser()+CreateProcessAsUser()+манипуляция с оконной станцией и рабочим столом, чтоб пользователь мог с ними нормально работать.
← →
Makhanev Alexander (2006-08-22 00:39) [6]
> Leonid Troyanovsky © (21.08.06 21:00) [2]
Автостарт при логоне есть, но дело в том, что процесс надо запускать, не дожидаясь того, когда юзер перелогинится.
> Ketmar © (21.08.06 21:13) [3]
>мой телепатор подозревает, что это что-то вроде шедулера или мессенджера? так?
Нет, не так. Это terminal services версия одного корпоративного софта.
> DiamondShark © (21.08.06 21:49) [4]
>Это чтобы окошки у пользователей видны были?
Вроде того. Мысль интересная, спасибо. Посмотрим...
> Чапаев © (21.08.06 22:42) [5]
>Да... В MSDN ещё преогромный пример есть на использование LogonUser( +CreateProcessAsUser()+манипуляция с оконной станцией и рабочим столом, чтоб пользователь мог с ними нормально работать.
Странно, что я не догадался покопаться в своем msdn"е. Спасибо за идею. Сейчас поищем...
← →
Makhanev Alexander (2006-08-22 11:51) [7]
> DiamondShark © (21.08.06 21:49) [4]
Упёрся в получение десктопов терминальных юзеров, так как:
The EnumDesktops function enumerates all desktops associated with the current window station of the calling process.
А как получить desktop по window station, пока не нашел...
← →
Makhanev Alexander (2006-08-22 11:55) [8]
> Чапаев © (21.08.06 22:42) [5]
Может, Вы имеете в виду статью "Starting an Interactive Client Process in C++
"?
← →
DiamondShark © (2006-08-22 12:32) [9]
> Makhanev Alexander (22.08.06 11:51) [7]
У вас какие-то неправильные пчёлы.
BOOL EnumDesktops(
HWINSTA hwinsta,
DESKTOPENUMPROC lpEnumFunc,
LPARAM lParam
);
hwinsta
[in] Handle to the window station whose desktops are to be enumerated. This handle is returned by the CreateWindowStation, GetProcessWindowStation, or OpenWindowStation function
← →
DiamondShark © (2006-08-22 12:45) [10]Только что попробовал. Нормально енумеруются.
← →
Чапаев © (2006-08-23 19:12) [11]> [8] Makhanev Alexander (22.08.06 11:55)
Насколько я помню, именно её.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2006.10.01;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.012 c