![]() |
|
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
![]()
|
|
| Zdvig |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 112 Регистрация: 3.5.2005 Репутация: нет Всего: 1 |
Пишу простенькую программу в виде dll, для записи времени включения и выключения компьютера.
Запускать dll нужно без участия дополнительных программ, кроме самой winlogon.exe (winXP). Для этого используется автозагрузка dll через реестр: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Notify\ Dll запускается, делает запись, но не выгружается из памяти. Это пол беды. Но при попытки выключения, перезагрузки или смене пользователя ничего не происходит. Dll как бы не дает разрешение на выход из системы. Как это можно исправить или подправить? Код программы:
Это сообщение отредактировал(а) Zdvig - 3.5.2005, 13:02 --------------------
Лампочка - ожерелье голых поп. Вся любовь - оп-хоп-хоп! |
|||
|
||||
| Rouse_ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 469 Регистрация: 23.4.2005 Репутация: 18 Всего: 29 |
Сделай экспорт ветви реестра где ты производишь регисрацию библиотеки и кинь его сюда...
|
|||
|
||||
| Zdvig |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 112 Регистрация: 3.5.2005 Репутация: нет Всего: 1 |
--------------------
Лампочка - ожерелье голых поп. Вся любовь - оп-хоп-хоп! |
|||
|
||||
| Rouse_ |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 469 Регистрация: 23.4.2005 Репутация: 18 Всего: 29 |
Ну во первых прототип функций выглядит как
вот тебе описание структуры:
Соответственно вот тебе примерный обработчик:
Это раз, во вторых не вижу где у тебя отработчики на DLL_PROCESS_ATTACH и DLL_PROCESS_DETACH Добавлено @ 15:09 т.е.
|
||||||||
|
|||||||||
| Zdvig |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 112 Регистрация: 3.5.2005 Репутация: нет Всего: 1 |
А по подробнее можно, куда это вписывать и как эти процедуры будут выглядеть полностью?
DLL_PROCESS_ATTACH и DLL_PROCESS_DETACH - я незнаю как их правильно мспользовать. Смотрел много примеров, но так и непонял их основного назначения... Мне интересно, что "подвешивает" систему в программе? Это сообщение отредактировал(а) Zdvig - 3.5.2005, 17:30 --------------------
Лампочка - ожерелье голых поп. Вся любовь - оп-хоп-хоп! |
|||
|
||||
| Girder |
|
||||||
![]() Лентяй 2 ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1993 Регистрация: 12.5.2004 Репутация: 25 Всего: 155 |
Это сообщение отредактировал(а) Girder - 4.5.2005, 02:17 -------------------- Как слышим, так и пишим. Истина где-то там... |
||||||
|
|||||||
| Rouse_ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 469 Регистрация: 23.4.2005 Репутация: 18 Всего: 29 |
По большому счету я бы написал примерно вот таким образом:
Это сообщение отредактировал(а) Rouse_ - 4.5.2005, 10:38 |
|||
|
||||
| Zdvig |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 112 Регистрация: 3.5.2005 Репутация: нет Всего: 1 |
Girder
Огромное тебе спасибо! Действительно работает! Только небольшая просьба, если есть еще глюки явные в программе, напиши, может подправить что... Rouse_ Идея интересна, dll почти ничего не весит --------------------
Лампочка - ожерелье голых поп. Вся любовь - оп-хоп-хоп! |
|||
|
||||
| Rouse_ |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 469 Регистрация: 23.4.2005 Репутация: 18 Всего: 29 |
Странно. у меня все в порядке. XP SP2 DLL лежит в C:\WINDOWS\system32 реестр выглядит как:
С логом тоже вроде все нормально...
Добавлено @ 16:35 ЗЫ: Собирал я данную чтуку под Дельфи семеркой с первым сервиспаком... |
||||||
|
|||||||
| Zdvig |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 112 Регистрация: 3.5.2005 Репутация: нет Всего: 1 |
Хм, я имя dll поменял. В коде не смотрел, есть ли зависимость?
Система таже, только Delphi 7 без с'паков. Самое главное в dll, так это запись времени ее загрузки и выгрузки, ради чего я вобщем-то все и делаю. Можно это добавить в твой код? Я его толком не смотрел, разбираться надо, а ты раз написал, сможешь быстро вствить --------------------
Лампочка - ожерелье голых поп. Вся любовь - оп-хоп-хоп! |
|||
|
||||
| Girder |
|
|||
![]() Лентяй 2 ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1993 Регистрация: 12.5.2004 Репутация: 25 Всего: 155 |
Rouse_ я тут твой пример... немного переписал.
Zdvig проверь.
-------------------- Как слышим, так и пишим. Истина где-то там... |
|||
|
||||
| Rouse_ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 469 Регистрация: 23.4.2005 Репутация: 18 Всего: 29 |
Girder, твой вариант также отработал без проблем.
Только смысла вот в этом я не вижу:
Так как этот код выполниться только при первой загрузке библиотеки, все остальные загрузки библиотеки в другие адресные пространства будут нотифицироваться при помощи DLL_PROCESS_ATTACH и в остальных процессах данный код не выполниться |
|||
|
||||
| Girder |
|
|||
![]() Лентяй 2 ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1993 Регистрация: 12.5.2004 Репутация: 25 Всего: 155 |
1. Смотря как её грузят. 2. По большому счету... считаю что вообще можно удалить DisableThreadLibraryCalls(подумаеш... будут беспокоить И самое главное... 3. Кому придет в голову... её ещё грузить? -------------------- Как слышим, так и пишим. Истина где-то там... |
|||
|
||||
| Rouse_ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 469 Регистрация: 23.4.2005 Репутация: 18 Всего: 29 |
Ну я просто думаю вперед, вдруг ему захочется развивать библиотеку, встраивать туда еще что-либо |
|||
|
||||
| Zdvig |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 112 Регистрация: 3.5.2005 Репутация: нет Всего: 1 |
Библиотеку 99,9% что никто не загрузит больше, если winlogon.exe не глюкнет
При загрузке-пишет лог, при смене пользователя, также пишет. Если работают оба пользователя, т.е. dll вызывается и одновременно работет 2 раза - проблем нет. При перезагрузке, пишется время выхода для обоих пользователей. Видно этим занимается winlogon.exe Тестировал на XP sp1, sp2, Win2003 Server Girder
Работает, но не выгружет виндовс. Проблема так и остается. Первый твой способ прошел отлично. Насчет развивать библиотеку, да, думаю вставить туда снятие скриншотов Это сообщение отредактировал(а) Zdvig - 5.5.2005, 16:45 --------------------
Лампочка - ожерелье голых поп. Вся любовь - оп-хоп-хоп! |
|||
|
||||
![]()
|
| Правила форума "Delphi: WinAPI и системное программирование" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |