Читатель: Как мне запускать программу как сервис под Windows 2000?
Редакция: Когда Вы устанавливаете приложение, в состав которого входит некий сервис, программа установки должна зарегистрировать этот сервис в системе. Для его регистрации вызывается API-функция CreateService, реализованная в Advapi32.dll. При регистрации Win2000 создает в реестре для каждого сервиса раздел по адресу HKLM\SYSTEM\CurrentContorol Set\Services, в который записывает пути к соответствующим исполняемым файлам, а также параметры и индивидуальные настройки.
Зарегистрировав сервис, программа установки или управляющее приложение может запустить его через API-функцию StartService.
Когда Win2000 запускает процесс сервиса, тот немедленно должен вызвать API-функцию StartServiceCtrlDispatcher. Эта функция принимает список точек входа в сервисы ў по одной на каждый сервис процесса. Каждая точка входа идентифицируется именем соответствующего сервиса, при этом StartServiceCtrlDispatcher находится в бесконечном цикле ожидания команд Win2000 и возвращает управление основной функции процесса только после завершения всех потоков сервисов в этом процессе, давая ему время на очистку всех ресурсов.
Если у Вас есть какая-то программа, которую нужно запускать как сервис, Вы должны модифицировать ее стартовый код в соответствии с требованиями к сервисам, описанными выше. Если исходный код этой программы отсутствует, Вы можете воспользоваться утилитой SrvAny из ресурсов Windows 2000. SrvAny позволяет выполнять любое приложение как сервис. При запуске SrvAny уведомляет Win2000 о том, что она предоставляет определенный сервис, и, получив от нее команду, запускает исполняемый файл сервиса как дочерний процесс, передавая ему копию маркера доступа. Таким образом, сервис выполняется с параметрами защиты и настройками, указанными Вами при конфигурировании SrvAny. Недостаток использования SrvAny заключается в том, что каждое приложение, установленное это утилитой как сервис, выполняется в отдельном процессе с отдельной копией хост-программы SrvAny, что не является наиболее экономичным способом использования ресурсов компьютера.
Читатель: Последнее время мой компьютер стал как-то медленно работать, постоянно подтормаживать. Все программы начали запускаться раза в два дольше, чем раньше. Один мой знакомый компьютерщик сказал, что мне необходимо сделать дефрагментацию дисков. Скажите, пожалуйста, что это такое и как это сделать?
Редакция: На самом деле, дефрагментация - одна из самых распространенных операций обслуживания жестких дисков. Необходимость выполнения этой операции диктуется несовершенством файловых систем, применяемых в операционной системе Windows, и особенностями работы жестких дисков. Винчестеры устроены так, что чтение информации, расположенной на них последовательно бит за битом, происходит гораздо быстрее, чем если бы она находилась не в разных частях диска. При длительном использовании компьютера, когда Вы часто устанавливаете новые программы и игры, а потом удаляете их, информация оказывается разбросанной по всей поверхности "блина" винчестера, иначе говоря, фрагментированные файлы или папки разделены на множество частей и разбросаны по всему тому. Если том содержит много фрагментированных файлов и папок, системе требуется большее время для обращения к ним, поскольку приходится выполнять дополнительные операции чтения с диска их отдельных частей. На создание файлов и папок также уходит больше времени, поскольку свободное пространство на диске тоже состоит из разрозненных фрагментов и системе приходится сохранять новые файлы и папки в разных местах тома.
Дефрагментатор дисков выполняет поиск таких фрагментированных папок и файлов на всех локальных томах компьютера. Он перемещает разрозненные части каждого файла или папки в одно место тома, после чего файлы и папки занимают на диске единое последовательное пространство. В результате доступ к файлам и папкам выполняется эффективнее. Объединяя отдельные части файлов и папок, программа дефрагментации также объединяет в единое целое свободное место на диске, что делает менее вероятной фрагментацию новых файлов.
Поэтому считается, что если проводить дефрагментацию регулярно, работа с диском может значительно ускориться, хотя сама операция дефрагментации может оказаться весьма длительной. Насколько важно дефрагментировать ваш жесткий диск ў каждый решает самостоятельно, мы лишь отметим тот факт, что диски с файловой системой FAT несколько больше подвержены процессу фрагментации, чем диски NTFS. А также то, что фрагментация диска, на котором расположен файл подкачки (win386.swp дляWin9x и pagefile.sys для Win2k), наиболее сильным образом влияет на производительность всей системы.
На вкладке свойств диска Вы можете запустить утилиту дефрагментации, поставляемую вместе с Windows, и представляющую собой крайне урезанную версию коммерческого продукта. Для этого откройте "Мой компьютер", щелкните правой клавишей мыши по нужному диску, дальше выберите "Свойства->Сервис->Дефрагментация диска". Не забудьте, что для запуска программы дефрагментации дисков из-под Win2k Вам необходимо обладать необходимыми привилегиями.
Читатель: Скажите мне, пожалуйста, где Windows NT хранит все пароли и логины на вход в систему. Ведь где-то же она должна их хранить! Как можно их прочитать, а еще лучше, скопировать на дискету? Спасибо.
Редакция: Вся информация об учетных записях и группах (включая интересующие Вас пароли) хранится в специальной централизованной базе данных. В Windows NT 4, а также в Windows 2000 эта база называется SAM (Security Accounts Manager). В базе данных SAM каждый пользователь и каждая группа, а также каждый компьютер идентифицируется уникальным идентификатором безопасности SID (Security Identifier), который каждый раз при создании новой учетной записи автоматически генерируется ОС совершенно случайным образом и никогда не используется повторно.
База данных SAM является в Windows одним из кустов реестра. Поэтому к ее содержимому можно обращаться, используя программу редактирования реестра (например, regedit или regedt32, которые поставляются вместе с ОС), используя путь HKEY_LOCAL_MACHINE\SAM для доступа к информации о локальных учетных записях и группах (например, паролях, определениях групп и сопоставлениях с доменами) и HKEY_LOCAL_MACHINE\SECURITY для доступа к данным, которые относятся к общесистемным политикам безопасности, а также к сведениям о правах, установленных пользователям (рис. 1).
Но здесь Вас ожидает одна маленькая неприятность: разделы SAM и SECURITY защищены; доступ к ним возможен только по системной учетной записи, даже администратор не может к ним обратиться напрямую. Но есть один фокус, позволяющий исследовать их содержимое с помощью редактора реестра, не меняя защиту. Дело в том, что команда at запускает приложения в указанное время по системной учетной записи. Поэтому, если Вы (ее нужно запускать из командной строки) настроите команду at на запуск редактора реестра в интерактивном режиме, то получите экземпляр редактора, способного обращаться к разделам SAM и SECURITY. Для запуска команды at необходимо набрать "at" в командной строке (рис. 2).
К сожалению (а, может, и к счастью), данные в этих разделах не документированы, а пароли зашифрованы. Чтобы скопировать необходимые Вам данные на дискету, нужно просто перенести на нее файлы \Winnt\System32\ Config\Sam для получения копии раздела реестра HKEY_LOCAL_MACHINE\SAM и \Winnt\ System32\Config\ Security для получения копии HKEY_ LOCAL_ MACHINE\SECURITY.
Эта операция может пройти успешно только в том случае, если Windows 2000 была установлена на раздел FAT и Вы загрузились под ДОСом, например, используя системную дискету.
По материалам журнала Компьютер Price (www.comprice.ru) |