Трепанация для почтовой мыши Фленов Михаил Xakep, номер #066, стр. 066-108-2 ErrorSeverity – что делать, если во время запуска произошла ошибка. Здесь можно указать одно из следующих значений: - esIgnore продолжить выполнение; - esNormal вывести сообщение, но продолжить работу; - esSevere продолжить работу, если стартует конфигурация, которая уже стартовала удачно, или запустить конфигурацию, которая стартовала удачно; - esCritical запустить конфигурацию, которая стартовала удачно, но если сейчас стартует именно она, то запуск выдает ошибку. В любом случае в системном журнале прописывается запись о происшедшей ошибке, но вот на экране нам отображать ничего не надо. Незачем пользователя смущать лишними сообщениями, иначе из-за мелкого бага он начнет раскапывать, что это за сервис у него глюкнул и зачем. Поэтому измени параметр ErrorSeverity на esIgnore. Системные журналы проверяют редко, а вот сообщение на экране упустить из виду просто нереально. ServiceStartName и Password – это имя учетной записи и пароль, под которыми будет работать сервис. От этого зависят права на доступ к различным объектам. Если ты заведомо знаешь пароль админа машины жертвы, то можешь указать его здесь, иначе оставь эти параметры пустыми, чтобы сервис работал под системной учетной записью. Перезагрузка Dependencies – зависимости. Если дважды щелкнуть по этому свойству, то появится окно, в котором можно указать сервисы, от которых будет зависеть твой. Это значит, что все они должны будут запуститься раньше. ServiceType – тип сервиса. Существует три типа: - stWin32 стандартный оконный сервис, то, что нам и нужно; - stDevice для драйверов устройств; - stFileSystem драйвер файловой системы. StartType – тип запуска сервиса по умолчанию. Здесь можно указать одно из следующих значений: - stBoot используется оконный загрузчик, когда тип сервиса не stWin32; - stSystem стартовать после инициализации системы; - stAuto запускаться автоматически во время загрузки системы. Для зло-сервиса это идеальный вариант; - stManual сервис стартует ручками; - stDisabled отключено. События Самое вкусное прячется в событиях объекта TService. Давай взглянем, что тут у нас есть: AfterInstall – генерируется после инсталляции сервиса. AfterUninstall – генерируется после удаления сервиса. BeforeInstall – генерируется после инсталляции сервиса. BeforeUninstall – генерируется после удаления сервиса. OnContinue – запуск после паузы. OnPouse – сервис приостановлен. OnShutdown – сервис остановлен на выключение. OnStart – сервис стартовал. OnStop – сервис остановился. Какие события нам выбрать? На первый взгляд, зло-код должен находится в событии OnStart. Это верно, но не на все 100%, потому что злиться надо на два события: OnStart и OnInstall. Когда юзер инсталлирует сервис, мы уже можем просканить его диск и найти то, что надо, не дожидаясь нормального запуска сервиса. Именно так мы и поступим. Старт-стоп Уже сейчас можно скомпилировать проект и установить в систему получившийся сервис. Правда, он пока еще ничего не делает, но потренироваться с установкой можно. Чтобы проинсталлировать сервис, нужно скомпилировать проект (Ctrl+F9) и запустить программу с ключом /INSTALL. Чтобы удалить из системы, нужно выполнить прогу с ключом /UNINSTALL. |