4

Это про sc.exe

Я хочу запустить свою программу как службу в Windows. Я могу сделать это с помощью командной строки

Моя программа находится в папке system32 , поэтому сначала я захожу в system32 а затем использую эти команды

c:\windows\system32>sc create demo binpath= "pg.exe" type= own start= auto DisplayName= "autostart"
c:\windows\system32>sc config demo binpath= "cmd.exe /c c:\windows\system32>pg.exe" type= own start= auto DisplayName= "autostart"

после выполнения этих команд, когда я перезагружаю компьютер, моя программа запускается как служба, и это нормально.

Теперь я хочу создать скрипт autoit, который будет выполнять эти команды, но не может понять, как я это делаю.

Я пробовал это

#include <RunCMD.au3>
$cmd = "sc create demo1 binpath= c:\pg.exe type= own start= auto"
_RunCMD($cmd)
$cmd = "sc config demo1 binpath= "cmd.exe /c c:\pg.exe" type= own start= auto"
_RunCMD($cmd)

Первая команда выполняется успешно, а вторая - нет.

3 ответа3

1

Как выполнять команды cmd через AutoIT

Вы можете использовать функцию AutoIT Run для запуска \ запуска внешней программы с помощью функции Run, и ниже приведен пример с предоставленной вами логикой.

#RequireAdmin
Run('sc create demo1 binpath= c:\pg.exe type= own start= auto')
Run('sc config demo1 binpath= "cmd.exe /c c:\pg.exe" type= own start= auto')

Проблема, с которой вы, вероятно, сталкиваетесь, чтобы заставить вторую команду работать должным образом с функцией Snippet _RunCMD , связана с использованием двойных кавычек, а также в пределах значения устанавливаемой переменной.

Вот пример использования одинарных кавычек вокруг значения переменной, а не двойных, так как фактическое значение переменной содержит двойные кавычки.

$cmd = 'sc config demo1 binpath= "cmd.exe /c c:\pg.exe" type= own start= auto'

0

Посмотрите на ComSpec https://www.autoitscript.com/wiki/Snippets_%28_CMD_%29

Синтаксис немного хитрый из-за escape-символов, но это возможно.

Вы также можете обнаружить, что вы можете заменить некоторые командные строки встроенными функциями в AutoIT

0

Команды CMD лучше всего выполнять из командного файла Windows, если вы настроите запуск командного файла при запуске с командами в командном файле, он должен работать нормально.

  • Если на вашем рабочем столе Windows 7 в меню "Пуск" есть папка "Пуск", перетащите пакетный файл с вашими командами в эту папку, затем, когда Windows запустится, она сделает это и выполнит команды.
  • Если вы работаете в Windows 8 или 8.1, путь к файлу: C:\Users(ваш пользователь)\AppData\Roaming\Microsoft\Windows\ Меню Пуск \ Программы \ Запуск

Когда пакетный файл находится в папке при запуске, он запускает и выполняет ваши команды.

Формат для пакетного файла:

@echo off
(your command)
(your command)
exit

Желаем удачи, если это не сработает, поиграйте с папкой автозагрузки.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .