|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Остановка и запуск службы |
|
[решено] Остановка и запуск службы
|
Ветеран Сообщения: 753 |
Профиль | Отправить PM | Цитировать Добрый день !
Подскажите плз, какими командами можно останавливать и запускать службу ? |
|
------- Отправлено: 19:23, 02-03-2011 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать SharkyEXE, одно слово: Wbem.
Скрытый текст
AutoItSetOption("MustDeclareVars", 1)
Local $sServiceName = "wscsvc"
Local $oSWbemLocator = ObjCreate("WbemScripting.SWbemLocator")
Local $oSWbemServicesEx = $oSWbemLocator.ConnectServer(".", "root\cimv2")
Local $oSWbemObjectEx = $oSWbemServicesEx.Get("Win32_Service.Name='" & $sServiceName & "'")
If $oSWbemObjectEx.State <> "Running" Then
If $oSWbemObjectEx.StartMode <> "Disabled" Then
If $oSWbemObjectEx.StartService() = 0 Then
ConsoleWrite("Service [" & $sServiceName & "] start successfully." & @CRLF)
Else
ConsoleWrite("Can't start service [" & $sServiceName & "]." & @CRLF)
EndIf
Else
ConsoleWrite("Service [" & $sServiceName & "] is disabled." & @CRLF)
EndIf
Else
ConsoleWrite("Service [" & $sServiceName & "] already running." & @CRLF)
EndIf
Exit(0)
|
Отправлено: 15:59, 24-12-2017 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 900
|
Профиль | Отправить PM | Цитировать Iska
Просьба 1 1) Для расширенной работы ( чтобы больше к этому вопросу лично мне не возвращаться ) вместо Local $sServiceName = "wscsvc" прописал Local $sServiceName = "Winmgmt" 2) Делаю Приостановка службы Winmgmt = Инструментарий управления Windows 3) Запускаю Ваш код 4) Ни ответа , ни привета 5) Пожалуйста , просьба добавить строки на предмет статуса службы Приостановлено = PAUSED https://cloud.mail.ru/public/FsMR/S2o85Cs8n Просьба 2 А можете , пожалуйста , это все тынц облагородить на язык Autoit Я про что - это все тынц + Ваш способ помещаем в один autoit файл и делаем глобальную проверку: 1) если 2) если 3) если 4) если call wmic /locale:ms_409 service where (name="wsearch") get state /value | findstr State=Running if %ErrorLevel% EQU 0 ( echo Running ) else ( echo Not running ) 6) то далее пойдут строки моего скрипта 7) иначе - запуск службы Вашим способом и далее снова 5ть проверок Если по короче - если 5ть проверок дают служба как запущена , если 5ть проверок дают служба как работает - то далее пойдут строки моего скрипта Иначе - запуск службы Вашим способом и далее снова 5ть проверок Один раз работка и на свю жизнь , зато 200% уверенность , что служба работает , что служба запущена |
Последний раз редактировалось SharkyEXE, 24-12-2017 в 23:00. Отправлено: 21:35, 24-12-2017 | #12 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата SharkyEXE:
Скрытый текст
Цитата SharkyEXE:
Цитата SharkyEXE:
Цитата SharkyEXE:
Цитата SharkyEXE:
Но дело даже не в том. В данном конкретном случае было бы странно ожидать иного: Вы приостанавливаете работу той самой службы, которая как раз и отвечает за работоспособность Wbem. Цитата SharkyEXE:
|
||||||
Отправлено: 23:14, 24-12-2017 | #13 |
Ветеран Сообщения: 900
|
Профиль | Отправить PM | Цитировать Iska
Здравствуйте. 1) Ваш скрипт , если служба Приостановлена - никогда не запустит такую службу 2) Почему привел пример с Приостановкой службы Winmgmt - потому что служба wscsvc не Приостанавливается Приведу другой пример с Приостановкой службы LanmanWorkstation = Рабочая станция https://cloud.mail.ru/public/CUtx/C5ymz7zA3 Если по короче , куда-то в Ваш скрипт мне бы хотелось , что Вы добавили типа таких строк 3) А я просто попросил при Вашем желании свести все в один файл , этот файл останется на всю жизнь для всех , кому нужно - тот и будет для себя использовать любую из 5ти проверок А мне 5ти проверок хватит , это же не сложно для тех , кто понимает , как написать , однако это большая помощь тем , кто обращается за помощью. Я никого и никогда не считал , не считаю и не буду считать, когда я обращаюсь за помощью , никакой феей и прочим , мне просто хочется помощи без надсмешек над тем , кто мне хочет помочь Спасибо. |
Последний раз редактировалось SharkyEXE, 24-12-2017 в 23:38. Отправлено: 23:24, 24-12-2017 | #14 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата SharkyEXE:
Цитата SharkyEXE:
Выбранный Вами пример оказался неудачным, но ладно, разобрались. Цитата SharkyEXE:
Но мы так и не определились с конечной целью. Что в итоге Вам нужно — получить работающую службу из любого состояния? А если она вообще — disabled, отключена? |
|||
Отправлено: 23:42, 24-12-2017 | #15 |
Ветеран Сообщения: 900
|
Профиль | Отправить PM | Цитировать Цитата Iska:
Цитата Iska:
Цитата Iska:
PS. Пожалуйста , я Вас очень прошу , реализуйте все это тынц на Autoit , вряд ли еще есть какие-то способы , разве что на vbs или с привлечением дополнительно подключаемых au3 сервисов , типа #include Services.au3 , но 5ть способов уже за глаза , тем более все 5ть способов , в том числе и Ваш - все штатными средствами Windows , что еще гарантирует надежность Спасибо. |
|||
Последний раз редактировалось SharkyEXE, 25-12-2017 в 00:11. Отправлено: 00:04, 25-12-2017 | #16 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата SharkyEXE:
Примерно так: Скрытый текст
AutoItSetOption("MustDeclareVars", 1) If RunService("wscsvc") Then ConsoleWrite("Service running." & @CRLF) ; ; Place your code here ; Else ConsoleWrite("Service not running." & @CRLF) EndIf Exit(0) Func RunService($sServiceName) Local $oSWbemLocator = ObjCreate("WbemScripting.SWbemLocator") Local $oSWbemServicesEx = $oSWbemLocator.ConnectServer(".", "root\cimv2") Local $oSWbemObjectEx = $oSWbemServicesEx.Get("Win32_Service.Name='" & $sServiceName & "'") Local $iTimer = 0 Local $bDone = False Do Switch $oSWbemObjectEx.State Case "Running" ConsoleWrite("Service [" & $sServiceName & "] already running." & @CRLF) Return True Case "Stopped" If $oSWbemObjectEx.StartMode = "Disabled" Then If Not $oSWbemObjectEx.ChangeStartMode("Manual") = 0 Then ConsoleWrite("Can't change start mode of service [" & $sServiceName & "] to [Manual]." & @CRLF) Return False EndIf EndIf If $oSWbemObjectEx.StartService() = 0 Then ConsoleWrite("Service [" & $sServiceName & "] start successfully." & @CRLF) Return True Else ConsoleWrite("Can't start service [" & $sServiceName & "]." & @CRLF) Return False EndIf Case "Paused" If $oSWbemObjectEx.ResumeService() = 0 Then ConsoleWrite("Service [" & $sServiceName & "] resume successfully." & @CRLF) Return True Else ConsoleWrite("Can't resume service [" & $sServiceName & "]." & @CRLF) Return False EndIf Case "Unknown" ConsoleWrite("Service [" & $sServiceName & "] is unknown state." & @CRLF) Return False Case "Start Pending" Case "Stop Pending" Case "Continue Pending" Case "Pause Pending" EndSwitch Sleep(100) $iTimer = $iTimer + 100 Until $iTimer > 60 * 100 * 10 ConsoleWrite("Timer out for pending operation for service [" & $sServiceName & "]." & @CRLF) Return False EndFunc |
|
Отправлено: 01:09, 25-12-2017 | #17 |
Ветеран Сообщения: 900
|
Профиль | Отправить PM | Цитировать Цитата Iska:
|
|
Последний раз редактировалось SharkyEXE, 25-12-2017 в 01:20. Отправлено: 01:14, 25-12-2017 | #18 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать SharkyEXE, более чем достаточно одного-единственного способа, чтобы иметь уверенность, что служба работает. Я про другое: невозможно гарантировать, что службу удастся перевести в состояние «Работает».
|
Отправлено: 01:26, 25-12-2017 | #19 |
Ветеран Сообщения: 900
|
Профиль | Отправить PM | Цитировать Iska
Опять Вы меня не понимаете , извините меня , пожалуйста. Если 5ть способов ( 4ре этих + 1 Ваш ) возвращают что служба работает - тут ничего не поделаешь , что верить можно 100% 1) Мне не требуется 5тью способами перевести службу из Остановлено -> в Работает 2) Мне не требуется 5тью способами перевести службу из Приостановлено -> в Работает 3) Мне не требуется 5тью способами перевести службу из Отключена -> в Ручную -> в Работает Мне хочется 5ть способов проверки , что служба работает и не более Мне хочется , чтобы все 5ть способов проверки , что служба работает , мне возвращали одно и тоже - RUNNING , после чего я буду запускать мой скрипт То есть Ваш скрипт - основной , а дополнительно мне бы хотелось прикрутить тынц Итого : отрабатывает Ваш код + дополнительно 4ре способа возвращают RUNNING - после чего работает мой скрипт Что здесь плохого-то? |
Последний раз редактировалось SharkyEXE, 25-12-2017 в 01:43. Отправлено: 01:35, 25-12-2017 | #20 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
[решено] Остановка службы. | Just4Fun | Microsoft Windows NT/2000/2003 | 19 | 17-05-2013 14:27 | |
Разное - Частая остановка службы | VbInt | Microsoft Windows Vista | 6 | 18-02-2009 16:21 | |
Службы - Внезапная остановка Службы диспетчера печати | aminiy | Microsoft Windows Vista | 10 | 18-07-2008 17:55 | |
Remote Procedure Call (RPC) непредвиденная остановка службы | ppv | Microsoft Windows NT/2000/2003 | 15 | 15-02-2007 23:58 | |
непредвиденная остановка службы Isass.exe | Trei | ISA Server / Microsoft Forefront TMG | 3 | 24-08-2005 08:27 |
|