Advertisement
AZJIO

Запуск файла как службу

Jun 1st, 2013
867
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
AutoIt 2.15 KB | None | 0 0
  1. ;  @AZJIO
  2. ; Имя службы - имя файла
  3.  
  4. If Not FileExists(@SystemDir & '\SRVANY.EXE') Or Not FileExists(@SystemDir & '\INSTSRV.EXE') Then
  5.     MsgBox(0, "Ошибка", "Проверте наличие  файлов INSTSRV.EXE и SRVANY.EXE в %SystemRoot%\system32")
  6.     Exit
  7. EndIf
  8. ;Добавление $sTarget позволило использовать скрипт в контекстном меню
  9. If Not $CmdLine[0] Then
  10.     $SRV_FILE = FileOpenDialog("Выбор файла *.exe, который будет запущен как сервис.", @ScriptDir & "", "exe-файл (*.exe)", 1 + 4)
  11.     If @error Then Exit
  12. Else
  13.     $SRV_FILE = $CmdLine[1]
  14. EndIf
  15. $srv_naim = StringRegExpReplace($SRV_FILE, "(^.*)\\(.*)\.(.*)$", '\2')
  16. $process = $srv_naim
  17. ; диалог выбора имени службы, можно закомментировать, тогда по умолчанию по имени файла.
  18. $srv_naim = InputBox("Имя службы", "Можете изменить имя службы, если это необходимо. Или отменить операцию", $srv_naim, "", 260, 130)
  19. If @error Or $srv_naim = '' Then
  20.     MsgBox(0, "Состояние", 'Создание службы отменено.', 3)
  21.     Exit
  22. EndIf
  23.  
  24. $srvn = RegRead('HKLM\SYSTEM\CurrentControlSet\Services\' & $srv_naim, '')
  25. If @error <> 1 Then
  26.     MsgBox(0, "Ошибка", "Служба с таким именем уже существует")
  27.     Exit
  28. EndIf
  29. Run(@SystemDir & '\INSTSRV.EXE "' & $srv_naim & '" ' & @SystemDir & '\SRVANY.EXE', '', @SW_HIDE)
  30. ProgressOn("Создание службы", $srv_naim, '', -1, -1, 18)
  31. ProgressSet(50, "Запуск службы")
  32. ;RegWrite('HKLM\SYSTEM\CurrentControlSet\Services\'&$srv_naim,'Type','REG_DWORD','272')
  33. RegWrite('HKLM\SYSTEM\CurrentControlSet\Services\' & $srv_naim & '\Parameters', 'Application', 'REG_SZ', $SRV_FILE)
  34. RegDelete('HKLM\SYSTEM\CurrentControlSet\Services\' & $srv_naim & '\Security')
  35. RunWait(@ComSpec & ' /C NET START "' & $srv_naim & '"', '', @SW_HIDE)
  36. ProgressOff()
  37. If ProcessExists($process & '.exe') Then MsgBox(0, "Состояние", 'Процесс ' & $process & ' запущен.', 3)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement