Logoff current user in Windows NT

From
Demid ()
To
All
Date
2001-06-05T12:33:05Z
Area
SU.WINDOWS.NT.PROG
From: "Demid" <demid@pstu.edu>

Вот, задавал этот вопрос в ru.delphi, посоветовали обратиться сюда.

Дано:
Нужно написать Windows NT Service, который, кроме всего прочего, мог бы
разлоговывать пользователя, сидящего за консолью. Не перегружая при этом
машину.
Поковырявшись в MSDN придумал следующий алгоритм:

1. Service создает новый процесс;
2. Процесс ищет Window Station текущего пользователя на консоли;
3. Процесс присоединяется к найденной Window Station, выполняет
    AdjustTokenPrivileges и ExitWindowsEx с соответствующими параметрами.

Вопросы следующие:
1. Я вообще в правильном направлении иду, или это не будет работать,
    или это будет работать, но можно проще и т.д.?
2. Как создать процесс? CreateProcess и аналогичные функции хотят
    ModuleName, т.е. код, выполняющий нужные операции, нужно помещать
    в отдельный файл. Разве нельзя в Windows создать процесс,
    выполняющий что-то из находящегося в памяти?
3. Я нашел только функцию OpenInputDesktop, которая возвращает handle
    десктопа, в который передается ввод пользователя. Как по этому
    десктопу определить, в какой Window Station он находится?
4. Если пользователь не залогован или консоль заблокирована, чей
    desktop в этом случае считается активным?

--
с ув.  Демид Тузенко



--- ifmail v.2.15dev5
 * Origin: AIC Ltd. (2:5020/400)