Shym
18-04-2008, 21:22
Как создать службу без сторонних программ?
Вот я, например, взял программу для создания служб, отследил изменения в реестре, по изменениям экспортировал все значения. После этого удалю ту же службу(через ту же программу) запускаю .reg файл и не удается записать в реестр по адресу HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\Root\LEGACY_<название службы> и HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ServiceCurrent. Может надо по определённой последовательности записывать значение в реестр? Или можно создать через командную сроку?
Не большая сатья по "SC CREATE"
Примеры:
sc \\myserver create NewService binpath= "c:\windows\system32\NewServ.exe"
\\myserver - задает имя удаленного сервера, на котором находится служба. В имени следует использовать формат UNC ("\\myserver").
sc create NewService binpath= "c:\windows\system32\NewServ.exe" type= share start= auto depend= "Service"
Служба находится на вашем компьютере.
type= {own|share|kernel|filesys|rec|adapt|interact type= {own|share}} - Указывает тип службы. Тип по умолчанию type= own.
own - Служба выполняется в собственном процессе. Она не использует исполняемый файл совместно с другими службами.
share - Служба выполняется как общий процесс. Она использует исполняемый файл совместно с другими службами
kernel - Драйвер
filesys - Драйвер файловой системы
rec - Драйвер, определяющий файловую систему (указывает файловые системы, используемые на компьютере)
interact - Служба может взаимодействовать с рабочим столом, получая входные данные от пользователей. Интерактивные службы должны выполняться с системной учетной записью. Этот тип должен использоваться вместе с type= own или type= shared (например, type= interact type= own). Самостоятельное использование типа type= interact приведет к ошибке недопустимого параметра.
start= {boot|system|auto|demand|disabled} - Указывает тип запуска для службы. Тип запуска по умолчанию start= demand.
boot - Драйвер устройства, который загружается загрузчиком системы
system - Драйвер устройства, который запускается при инициализации ядра
auto - Служба, которая автоматически запускается при каждой перезагрузке компьютера и даже в том случае, если на компьютер не вошел ни один пользователь
demand - Служба, которая должна запускаться вручную. Это значение используется по умолчанию, если не указан параметр start=
disabled - Служба, которую нельзя запустить. Чтобы запустить отключенную службу, выберите другой тип запуска
error= {normal|severe|critical|ignore} - Указывает серьезность ошибки, если служба не запускается при загрузке. Значение параметра по умолчанию error= normal.
normal - Ошибка записывается в журнал и выводится окно сообщения, информирующее пользователя об отказе при запуске службы. Запуск будет продолжен.
severe - Ошибка заносится в журнал (если это возможно). Компьютер пытается перезагрузиться в последней удачной конфигурации. Компьютер можно будет перезагрузить, но выполнить службу, возможно, не удастся.
critical - Ошибка заносится в журнал (если это возможно). Компьютер пытается перезагрузиться в последней удачной конфигурации. Если имеет место отказ последней правильной конфигурации, запуск также приведет к отказу и процесс загрузки остановится на ошибке.
ignore - Ошибка заносится в журнал и запуск продолжается. Ошибка записывается в журнал ошибок и другие уведомления пользователю не выводятся.
binpath= имя двоичного пути
Указывает путь в двоичном файле службы. Значение по умолчанию для параметра binpath= не задано. Эту строку необходимо указать.
group= группа порядка загрузки
Указывает имя группы, членом которой является эта служба. Список групп сохраняется в реестре в подразделе HKLM\System\CurrentControlSet\Control\ServiceGroupOrder. Значение по умолчанию является пустым.
tag= {yes|no}
Указывает, следует ли получить код TagID из вызова CreateService. Теги используются только драйверами, запускающимися при загрузке или запуске системы.
depend= зависимости
Указывает имена служб и групп, которые должны быть запущены раньше данной службы. Имена разделяются косой чертой (/).
obj= {имя учетной записи|имя объекта}
Указывает имя учетной записи, для которой будет выполняться служба, или имя объекта драйвера Windows, в котором будет запущен драйвер.
displayname= отображаемое имя
Определяет понятное, точное имя для службы, которое используется в программах пользовательского интерфейса.
password= пароль
Задает пароль. Данный параметр требуется при использовании учетной записи, отличной от учетной записи «Локальная система».
/? - Отображает справку в командной строке.
Вот я, например, взял программу для создания служб, отследил изменения в реестре, по изменениям экспортировал все значения. После этого удалю ту же службу(через ту же программу) запускаю .reg файл и не удается записать в реестр по адресу HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\Root\LEGACY_<название службы> и HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ServiceCurrent. Может надо по определённой последовательности записывать значение в реестр? Или можно создать через командную сроку?
Не большая сатья по "SC CREATE"
Примеры:
sc \\myserver create NewService binpath= "c:\windows\system32\NewServ.exe"
\\myserver - задает имя удаленного сервера, на котором находится служба. В имени следует использовать формат UNC ("\\myserver").
sc create NewService binpath= "c:\windows\system32\NewServ.exe" type= share start= auto depend= "Service"
Служба находится на вашем компьютере.
type= {own|share|kernel|filesys|rec|adapt|interact type= {own|share}} - Указывает тип службы. Тип по умолчанию type= own.
own - Служба выполняется в собственном процессе. Она не использует исполняемый файл совместно с другими службами.
share - Служба выполняется как общий процесс. Она использует исполняемый файл совместно с другими службами
kernel - Драйвер
filesys - Драйвер файловой системы
rec - Драйвер, определяющий файловую систему (указывает файловые системы, используемые на компьютере)
interact - Служба может взаимодействовать с рабочим столом, получая входные данные от пользователей. Интерактивные службы должны выполняться с системной учетной записью. Этот тип должен использоваться вместе с type= own или type= shared (например, type= interact type= own). Самостоятельное использование типа type= interact приведет к ошибке недопустимого параметра.
start= {boot|system|auto|demand|disabled} - Указывает тип запуска для службы. Тип запуска по умолчанию start= demand.
boot - Драйвер устройства, который загружается загрузчиком системы
system - Драйвер устройства, который запускается при инициализации ядра
auto - Служба, которая автоматически запускается при каждой перезагрузке компьютера и даже в том случае, если на компьютер не вошел ни один пользователь
demand - Служба, которая должна запускаться вручную. Это значение используется по умолчанию, если не указан параметр start=
disabled - Служба, которую нельзя запустить. Чтобы запустить отключенную службу, выберите другой тип запуска
error= {normal|severe|critical|ignore} - Указывает серьезность ошибки, если служба не запускается при загрузке. Значение параметра по умолчанию error= normal.
normal - Ошибка записывается в журнал и выводится окно сообщения, информирующее пользователя об отказе при запуске службы. Запуск будет продолжен.
severe - Ошибка заносится в журнал (если это возможно). Компьютер пытается перезагрузиться в последней удачной конфигурации. Компьютер можно будет перезагрузить, но выполнить службу, возможно, не удастся.
critical - Ошибка заносится в журнал (если это возможно). Компьютер пытается перезагрузиться в последней удачной конфигурации. Если имеет место отказ последней правильной конфигурации, запуск также приведет к отказу и процесс загрузки остановится на ошибке.
ignore - Ошибка заносится в журнал и запуск продолжается. Ошибка записывается в журнал ошибок и другие уведомления пользователю не выводятся.
binpath= имя двоичного пути
Указывает путь в двоичном файле службы. Значение по умолчанию для параметра binpath= не задано. Эту строку необходимо указать.
group= группа порядка загрузки
Указывает имя группы, членом которой является эта служба. Список групп сохраняется в реестре в подразделе HKLM\System\CurrentControlSet\Control\ServiceGroupOrder. Значение по умолчанию является пустым.
tag= {yes|no}
Указывает, следует ли получить код TagID из вызова CreateService. Теги используются только драйверами, запускающимися при загрузке или запуске системы.
depend= зависимости
Указывает имена служб и групп, которые должны быть запущены раньше данной службы. Имена разделяются косой чертой (/).
obj= {имя учетной записи|имя объекта}
Указывает имя учетной записи, для которой будет выполняться служба, или имя объекта драйвера Windows, в котором будет запущен драйвер.
displayname= отображаемое имя
Определяет понятное, точное имя для службы, которое используется в программах пользовательского интерфейса.
password= пароль
Задает пароль. Данный параметр требуется при использовании учетной записи, отличной от учетной записи «Локальная система».
/? - Отображает справку в командной строке.