|
||||||||||||||||||||||||||||
Автор: GPcH. Дата публикации: 23.08.2004
|
Пишем сервис на Delphi[Вступление]Неплохо бы разобраться, что такое вообще сервис. Данный термин появился в NT системах и широкое распространение получил с выходом операционных систем Win2k и XP. Бесспорно преимущества сервисов над обычными программами ощутимы. Это и загрузка до загрузки обычных программ и большие привилегии и больший контроль над системой. Но главное - их нельзя выгрузить через Ctrl + Alt + Del, что позволяет создавать антивирусные мониторы и серверы баз данных именно в качестве сервисов. На то есть ряд причин. Во первых сервисы выполняются как бы незаметно для системы и пользователя, во вторых их блокировка возможна лишь через апплет администрирования панели управления, что не дает вредоносным программам выгружать эти сервисы средствами API функции. К примеру FireWall, работающий в качестве сервиса выгрузить из памяти практически невозможно, что оставляет меньше шансов вирусописателям на блокировку сетевых защит. Зачем данные возможности могут пригодиться нам? Думаю, если Вы решили заняться написанием крупного проекта, то наверное уже придумали применение сервисам в своем проекте, но как использовать сервисы простым пользователям, да еще и с пользой? На этот вопрос я и постараюсь ответить. [Цель] Писать мы будем шуточную программу, которая при запуске компьютера будет выдавать сообщение о незарегистрированности операционной системы. Думаю применение ей найти будет не трудно, так как шутки любят все. [Приступаем] Писать сервис мы будем на Delphi. Почему? Да потому, что там уже есть все заготовки под создание сервисов в отличии от Visual Studio 6.0. Про .NET я пока не говорю, так как мало кто имеет на своем компьютере библиотеки для запуска .NET приложений, а тащить за прогой 20 Mb библиотек - дело неблагодарное. С чего же нам начать? Да как обычно: "File" -> "New". Теперь самое интересное. В появившемся списке шаблонов следует выбрать "Service Application" и лицезреть заготовку для нашего будущего сервиса. Первым делом советую обратить внимание на свойства класса TService. Мы имеем возможность изменить следующий спектр параметров: AllowPause - разрешить или запретить приостанавливать сервис. Настоятельно рекомендую установить значение в False, чтобы пользователи не смогли приостанавливать работу сервиса через панель администрирования. AllowStop - также рекомендую установить в False, так как останавливать сервис пользователям лучше не давать - это чревато тем, что нашу шутку быстро остановят. Также есть возможности установить логин и пароль для увеличения привилегий, но так как мы не знаем пароль администратора компа, на который будем ставить шутку, то лучше эти параметры оставить пустыми. Вот собственно и все основные параметры. Главное не забудьте установить имя сервиса в что-нибудь типа "Antivirus Monitor", чтобы пользователь ни за что не догадался о надобности данного сервиса. [Программирование] Теперь разберемся с тем, какие компоненты мы имеем? А имеем мы не многое. Визуального ничего нам использовать нельзя по определению, так что будем использовать только события сервиса. Больше всего нас интересует событие OnStart, так как оно производится после загрузки сервиса. В него пропишем следующее:
Внушает? Думаю что шутка не у каждого вызовет смех ;) Вроде все. Компилируем. [Проверим работу сервиса] Проверять мы будем на машине друга-ламера (рекомендуется), так как такие друзья думаю есть у всех. Тут не все так просто. В автозагрузку сервис помещать нельзя, его необходимо инсталлировать специальным образом. Но, к нашей радости все не так сложно, достаточно запустить созданный нами сервис с ключом "/INSTALL" без кавычек. Удалить сервис через панель управления будет невозможно, так как все кнопки мы заблокировали. Но способ удаления все же есть и упомянуть о нем думаю будет нелишним. Для этого достаточно запустить EXE файл сервиса с другим ключом - "/UNINSTALL" также без кавычек. [Заключение] Дам Вам пару советов: 1. никогда не говорите друзьям-ламерам способ удаления сервиса 2. не используйте данные шутки на настоящих друзьях, так как это может подорвать дружественные отношения. Вроде все, удачи
|
|
| |||||||||||||||||||||||||