[решено] Остановка и запуск службы

Аватара пользователя
Казбек

Re: [решено] Остановка и запуск службы

Сообщение Казбек »

SharkyEXE,

Чем вас не устраивает возврат результата проверки состояния службы консольной утилиты SC.exe?Какая ваша конечная цель, зачем вам знать состояние этой службы и что вы хотите делать потом?
Аватара пользователя
SharkyEXE

Re: [решено] Остановка и запуск службы

Сообщение SharkyEXE »

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) если



Код:

Код: Выделить всё

sc query "ServiceName" | find "RUNNING"

2) если



Код:

Код: Выделить всё

net start | find "Service Name"

3) если



Код:

Код: Выделить всё

Get-Service -name 'ServiceName'

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
)

5) если (
[решено] Остановка и запуск службы
)

6) то далее пойдут строки
[решено] Остановка и запуск службы


7) иначе - запуск службы
[решено] Остановка и запуск службы
и далее снова 5ть проверок



Если по короче - если 5ть проверок дают служба как запущена , если 5ть проверок дают служба как работает - то далее пойдут строки
[решено] Остановка и запуск службы


Иначе - запуск службы
[решено] Остановка и запуск службы
и далее снова 5ть проверок



Один раз работка и на свю жизнь , зато 200% уверенность , что служба работает , что служба запущена
Аватара пользователя
Казбек

Re: [решено] Остановка и запуск службы

Сообщение Казбек »

Цитата SharkyEXE:



1) Для расширенной работы ( чтобы больше к этому вопросу лично мне не возвращаться ) вместо

Local $sServiceName = "wscsvc"

прописал

Local $sServiceName = "Winmgmt"
[решено] Остановка и запуск службы




У меня, видимо, совсем плохо с глазами стало, поскольку с утра было так:



Скрытый текст

[spoiler]Цитата SharkyEXE:[/spoiler]



Есть служба wscsvc ( Центр обеспечения безопасности )

Хочется запускать службу wscsvc с интервалом 1 секунда , пока состояние службы wscsvc не станет как Работает

Как только состояние службы wscsvc станет Работает - завершить работу скрипта

Реализации хочется чем проще тем лучше - хотелось при помощи sc query "wscsvc"
[решено] Остановка и запуск службы








Определитесь.




Цитата SharkyEXE:



2) Делаю Приостановка службы Winmgmt = Инструментарий управления Windows

3) Запускаю Ваш код

4) Ни ответа , ни привета
[решено] Остановка и запуск службы




SharkyEXE, есть существенная разница между понятиями запустить службу (StartService) и возобновить её работу (ResumeService). Ранее Вы писали:


Цитата SharkyEXE:



Хочется запускать службу wscsvc
[решено] Остановка и запуск службы




Теперь пишете про:


Цитата SharkyEXE:



2) Делаю Приостановка службы Winmgmt = Инструментарий управления Windows
[решено] Остановка и запуск службы




это разные вещи, которые делаются разными методами Wbem. Определитесь.



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




Цитата SharkyEXE:



Если по короче - если 5ть проверок дают служба как запущена , если 5ть проверок дают служба как работает…
[решено] Остановка и запуск службы




Я, конечно, не могу Вам запретить заниматься … в извращённой форме. Но в роли известной феи я выступать не хочу.
Аватара пользователя
SharkyEXE

Re: [решено] Остановка и запуск службы

Сообщение SharkyEXE »

Казбек



Тема про AUTOIT , можете мне , пожалуйста , все Ваши способы в один файл test.au3 на языке AUTOIT написать ?



Спасибо.
Аватара пользователя
SharkyEXE

Re: [решено] Остановка и запуск службы

Сообщение SharkyEXE »

Цитата SharkyEXE:



1) Ваш скрипт , если служба Приостановлена - никогда не запустит такую службу
[решено] Остановка и запуск службы




Именно так. Поскольку об этом не было разговора в ТЗ.




Цитата SharkyEXE:



2) Почему привел пример с Приостановкой службы Winmgmt - потому что служба wscsvc не Приостанавливается
[решено] Остановка и запуск службы




Именно так:



Код:

Код: Выделить всё

C:\Мои проекты\0139>wmic.exe service where "Name = 'wscsvc'" get AcceptPause
AcceptPause
FALSE

Выбранный Вами пример оказался неудачным, но ладно, разобрались.




Цитата SharkyEXE:



3) А я просто попросил при Вашем желании свести все в один файл , этот файл останется на всю жизнь для всех , кому нужно - тот и будет для себя использовать любую из 5ти проверок
[решено] Остановка и запуск службы




Хватит и одной.



Но мы так и не определились с конечной целью. Что в итоге Вам нужно — получить работающую службу из любого состояния? А если она вообще — disabled, отключена?
Аватара пользователя
Iska

Re: [решено] Остановка и запуск службы

Сообщение Iska »

Цитата Iska:



Именно так. Поскольку об этом не было разговора в ТЗ
[решено] Остановка и запуск службы




Я виноват , признаю , что от качественно написать , что хочется , будет и результат




Цитата Iska:



Что в итоге Вам нужно — получить работающую службу из любого состояния?
[решено] Остановка и запуск службы




Ага. Только , повторюсь , на самом деле работающую службу , а не чего-то где-то отчиталось , что служба работает , что служба запущена , а на самом деле служба не успела запуститься , служба еще не работает , а мой скрипт уже пошел работаь , вот поэтому и 5ть проверок мне хочется , точнее мне 5ть проверок - это 100,1% гарантия работы моего скрипта , другим людям - выбор , какой им из 5ти примеров проверки запуска службы использовать , что плохого , что не только для меня , но и для других ученье




Цитата Iska:



А если она вообще — disabled, отключена?
[решено] Остановка и запуск службы




Согласен , возможно и такое. Тогда службу перевести в Ручной запуск ( только не Автоматически ) и далее запуск



PS. Пожалуйста , я Вас очень прошу , реализуйте все это
[решено] Остановка и запуск службы
на Autoit , вряд ли еще есть какие-то способы , разве что на vbs или с привлечением дополнительно подключаемых au3 сервисов , типа #include Services.au3 , но 5ть способов уже за глаза , тем более все 5ть способов , в том числе и Ваш - все штатными средствами Windows , что еще гарантирует надежность



Спасибо.
Аватара пользователя
SharkyEXE

Re: [решено] Остановка и запуск службы

Сообщение SharkyEXE »

Цитата SharkyEXE:



Только , повторюсь , на самом деле работающую службу
[решено] Остановка и запуск службы




SharkyEXE, нет никаких способов гарантированно получить работающую службу. По многим причинам.



Примерно так:



Скрытый текст

[spoiler]Код:
[/spoiler]

Код: Выделить всё

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
Аватара пользователя
Iska

Re: [решено] Остановка и запуск службы

Сообщение Iska »

Цитата Iska:



нет никаких способов гарантированно получить работающую службу
[решено] Остановка и запуск службы




Есть! Если получены 5ть ответов , что служба запущена , что служба работает , разными штатными средствами Windows , разными языками, без привлечения сторонних , неизвестно каких утилит и программ , то вероятность 100,1% , что служба работает , что служба запущена Изображение
Аватара пользователя
SharkyEXE

Re: [решено] Остановка и запуск службы

Сообщение SharkyEXE »

SharkyEXE, более чем достаточно одного-единственного способа, чтобы иметь уверенность, что служба работает. Я про другое: невозможно гарантировать, что службу удастся перевести в состояние «Работает».
Аватара пользователя
Iska

Re: [решено] Остановка и запуск службы

Сообщение Iska »

Iska



Опять Вы меня не понимаете , извините меня , пожалуйста.



Если 5ть способов (
[решено] Остановка и запуск службы
+ 1 Ваш ) возвращают что служба работает - тут ничего не поделаешь , что верить можно 100%



1) Мне не требуется 5тью способами перевести службу из Остановлено -> в Работает

2) Мне не требуется 5тью способами перевести службу из Приостановлено -> в Работает

3) Мне не требуется 5тью способами перевести службу из Отключена -> в Ручную -> в Работает



Мне хочется 5ть способов проверки , что служба работает и не более



Мне хочется , чтобы все 5ть способов проверки , что служба работает , мне возвращали одно и тоже - RUNNING , после чего я буду запускать мой скрипт



То есть Ваш скрипт - основной , а дополнительно мне бы хотелось прикрутить
[решено] Остановка и запуск службы




Итого : отрабатывает Ваш код + дополнительно
[решено] Остановка и запуск службы
возвращают RUNNING - после чего работает мой скрипт



Что здесь плохого-то?
Ответить

Вернуться в «AutoIt»