Я написал веб-программу на php, которая должна останавливать службу Windows и запускать ее при запуске следующим образом:
exec('net stop spooler'); //to stop printer spooler
exec('net start spooler'); //to start printer spooler
приведенные выше коды не останавливают диспетчер очереди печати принтера, и я думаю, что знаю почему, потому что, когда я обычно открываю командную строку cmd- и набираю net start spooler
Я получаю отказ в доступе ... но когда я открываю командную строку cmd в качестве администратора, командная строка будет работать, поэтому я думаю, что apache также нужно предоставить разрешение администратора, чтобы приведенный выше код мог работать, но я не могу понять, как предоставить код для запуска от имени администратора.
службу Windows диспетчера очереди печати можно найти, нажав кнопку «Пуск»> «Выполнить»> в типе команды «Выполнить» services.msc, тогда вы увидите диспетчер очереди печати принтера как одну из служб Windows ... при запуске вышеуказанного кода ... он должен остановить это сервис или запускает его
Вы пробовали sc
команда тоже? Аналогичный вопрос
Вместо того, чтобы прыгать через обруч административного выполнения, как насчет того, чтобы PHP записывал в файл, физический файл и имел отдельный программа, запущенная с правами администратора, запустите net stop
команда? Это не только обеспечивает выполнение, но и безопасность. Для максимальной надежности вы можете иметь быстрое приложение VB.NET с Timer
чтобы проверять файл каждые x секунд, но я уверен, что вы также можете обойтись с запущенным командным файлом, в крайнем случае. Но с VB.NET вы можете запускать процесс в фоновом режиме в его собственном потоке и обеспечивать его выполнение.
Надеюсь, это проливает свет.