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)