Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.04.02;
Скачать: [xml.tar.bz2];

Вниз

Ошибка TService в D5   Найти похожие ветки 

 
kami ©   (2006-03-20 07:43) [0]

Создаю пустой интерактивную службу, из всего кода - в OnExecute :
While not terminated do
 ServiceThread.ProcessRequests(True);

Дальше такая последовательность:
- Устанавливаю, перезагружаюсь.
- захожу под гостем, LogOut
- захожу под админом - через 2 минуты (а иногда и раньше) служба вылетает...

само собой, это все на виртуальной машине (нет желания экспериментировать на своей)

ProcessExplorer показывает, что за миг перед вылетом в хендлах появляется Event: BaseNamedObject\userenv : UserProfile setup event (ну и парочка ErrorReporting)
Как от этого избавиться (без интерактивности не обойтись, своих потоков я в коде не создаю)? По коду TService и TServiceThread ничего не обнаружил, да и не понимаю, что искать...


 
kami ©   (2006-03-20 19:51) [1]

ммм... Up.
Подскажите, хоть, в каком направлении копать... Неинтерактивный сервис при таких манипуляциях не вылетает, оно и понятно - он работает в своей оконной станции и десктопе, которым все равно, кто там логинится. Просмотрев MSDN (навеяно веткой http://delphimaster.net/view/4-1138482663/  обнаружил, что даже OpenWindowsStation для неинтерактивных сервисов "не котируется"). Создавать же, как пишет тот же MSDN отдельное приложение для связи с десктопом чревато полной переделкой кода программы (вернее, не полной, но значительной и весьма неприятной).
Может, есть какой-то более простой способ ? Подскажите, please, уже не знаю, что и думать...


 
Eraser ©   (2006-03-20 20:24) [2]


> kami ©   (20.03.06 07:43)

Нужны 2 весчи.
1. Используй Winlogon Notification Package, чтобы определить, что пользователь совершил logon, logoff или заблокировал рабочую станцию.

2. Переключить поток сервиса (возможно несколько потоков) на текущий раб. стол. OpenInputDesktop, SetThreadDesktop.

см. MSDN там подробнее описано.


 
kami ©   (2006-03-20 21:20) [3]

Eraser ©   (20.03.06 20:24) [2]
Если я правильно понял, там все делается через реестр (то есть, нет специальной ф-и для регистрации этой dll). ?
Не будет ли вреда, если указанные функции будут в библиотеке, задействованной приложением (загружается статически)?

А так - кроме этих вопросов, пока вроде понятно.
Попробую сделать "проверочный" сервис, посмотрим, что получится...

Спасибо.


 
Eraser ©   (2006-03-20 21:49) [4]


> kami ©   (20.03.06 21:20) [3]


> Если я правильно понял, там все делается через реестр (то
> есть, нет специальной ф-и для регистрации этой dll). ?

да, регистрировать надо в реестре
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon

> Не будет ли вреда, если указанные функции будут в библиотеке,
>  задействованной приложением (загружается статически)?

не знаю... на то она и DLL что её несколько приложений использовать могут, но лучше сделать отдельную.. тем более что она в system32 должна находиться. Коммуникацию между этой DLL и приложением думаю можно с пом. тех же named pipes наладить.


 
kami ©   (2006-03-20 22:19) [5]

Eraser ©   (20.03.06 21:49) [4]
она в system32 должна находиться

Она и так там находится. Попробую сперва отдельную, потом "замиксовать" :)

Eraser ©   (20.03.06 21:49) [4]
тех же named pipes наладить

Думаю, хватит простого ControlService с моим параметром, но если не выйдет (кто его знает, будет ли запущен сервис при инициализации Winlogon Notification Packages )- придется что-нибудь в этом плане использовать...


 
Eraser ©   (2006-03-20 22:26) [6]


> kami ©   (20.03.06 22:19) [5]


> кто его знает, будет ли запущен сервис при инициализации
> Winlogon Notification Packages

скорее всего не будет.
Но думаю ControlService вполне подойдёт... в крайнем случае ошибку вернёт, если сервис не запущен.



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2006.04.02;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.04 c
2-1142584514
Кицум
2006-03-17 11:35
2006.04.02
Как в СтригГрид вывести картинку?


2-1141726763
nap<>
2006-03-07 13:19
2006.04.02
UPX


15-1141998023
Cashmare
2006-03-10 16:40
2006.04.02
Иран


15-1142243603
Lock
2006-03-13 12:53
2006.04.02
Delphi 8 Arhitect, ECO- проекты


9-1127579027
E
2005-09-24 20:23
2006.04.02
OpenGL и текстуры





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский