Автор: AZJIO
Дата сообщения: 28.04.2010 20:19
Сделал [more=скрипт]
Код: ; Имя службы - имя файла
If not FileExists(@SystemDir&'\SRVANY.EXE') or not FileExists(@SystemDir&'\INSTSRV.EXE') Then
MsgBox(0, "Ошибка", "Проверте наличие файлов INSTSRV.EXE и SRVANY.EXE в %SystemRoot%\system32")
Exit
EndIf
;Добавление $sTarget позволило использовать скрипт в контекстном меню
If $CmdLine[0]=0 Then
$SRV_FILE = FileOpenDialog("Выбор файла *.exe, который будет запущен как сервис.", @ScriptDir & "", "exe-файл (*.exe)", 1 + 4 )
If @error Then Exit
Else
$SRV_FILE=$CmdLine[1]
EndIf
$srv_naim = StringRegExpReplace($SRV_FILE, "(^.*)\\(.*)\.(.*)$", '\2')
$process = $srv_naim
; диалог выбора имени службы, можно закомментировать, тогда по умолчанию по имени файла.
$srv_naim = InputBox("Имя службы", "Можете изменить имя службы, если это необходимо. Или отменить операцию", $srv_naim, "",260, 130)
If $srv_naim='' Then
MsgBox(0, "Состояние", 'Создание службы отменено.', 3)
Exit
EndIf
$srvn = RegRead('HKLM\SYSTEM\CurrentControlSet\Services\'&$srv_naim, '')
If @error=0 Then
MsgBox(0, "Ошибка", "Служба с таким именем уже существует")
Exit
EndIf
Run(@SystemDir&'\INSTSRV.EXE "'&$srv_naim&'" '&@SystemDir&'\SRVANY.EXE','',@SW_HIDE)
ProgressOn("Создание службы", $srv_naim, '',-1,-1,18)
ProgressSet( 50, "Запуск службы")
;RegWrite('HKLM\SYSTEM\CurrentControlSet\Services\'&$srv_naim,'Type','REG_DWORD','272')
RegWrite('HKLM\SYSTEM\CurrentControlSet\Services\'&$srv_naim&'\Parameters','Application','REG_SZ',$SRV_FILE)
RegDelete('HKLM\SYSTEM\CurrentControlSet\Services\'&$srv_naim&'\Security')
RunWait ( @Comspec&' /C NET START "'&$srv_naim&'"', '', @SW_HIDE )
ProgressOff()
If ProcessExists($process&'.exe') Then MsgBox(0, "Состояние", 'Процесс '&$process&' запущен.', 3)