PDA

Показать полную графическую версию : [решено] Перезапуск службы и запись об этом в файл.


egorkin
15-12-2011, 13:50
Доброго всем дня. С батниками никогда не работал, очень нужно сформировать такой обработчик. В фирме сеть из 10 пк, на каждом стоит Tmeter с ограничениями для выхода в интернет, суть проблемы что все сидят с правами администратора и любой может спокойно отключить службу Tmeter и спокойно покорять просторы инета. Имя службы Tmeter - TrafSvc. ОС на всех ПК стоит XP.
1. Возможно ли создание программы для перезапуска службы, если её отключит пользователь? что-то похоже читал здесь http://forum.oszone.net/thread-186707.html, но не смог разобраться...
2. И записать об этом запуске в некий файл.txt? Если такое трудоемко, то подскажите как реализовать 1 вопрос.
Заранее благодарен.

Iska
15-12-2011, 14:26
суть проблемы что все сидят с правами администратора »
Вы верно определили суть проблемы.

Возможно ли создание программы для перезапуска службы, если её отключит пользователь? »
Возможно. Равно как для пользователя с административными правами возможно будет отключение этой гипотетической «программы».

Пока Вы не решите радикально вопрос с наличием административных прав у обычных пользователей, всё остальное будет — мёртвому припарки.

egorkin
15-12-2011, 14:42
Iska, понимаете на всех ПК сидят женщины среднего приклонного возраста, что такое службы они толком не знают. И если даже они найдут службу Tmeter и отключат "нечаенно", тут мне и поможет такая программка перезапуска службы! Будьте добры подскажите модуль программки?
P.S. А запаролить её нельзя?

egorkin
15-12-2011, 19:36
Добрые люди, хоть примерный код дайте... плиз...

egorkin
16-12-2011, 11:28
Так нашел vbs скрипт для проверки и запуска процесса TrafSvc.exe

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" _
& strComputer & "\root\cimv2")

Set colProcesses = objWMIService.ExecQuery( _
"Select Name From Win32_Process " _
& "Where Name = 'TrafSvc.exe'")

If colProcesses.Count = 0 Then
Set objShell = Wscript.CreateObject("Wscript.Shell")
objShell.Run "TrafSvc.exe"
End If

только при остаовке службы Tmeter, процесс заново не заускается. Т.е. я понимаю надо еще отдельный скрипт для перезапуска самой слыжбы?

egorkin
16-12-2011, 20:35
В общем нашел решение сам, спасибо форуму за "поддержку"
скрипт на vbs, надеюсь пригодится кому.

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTextFile = objFSO.CreateTextFile("c:\temp\logsTrafSvc.txt", True)
While 1
strComputer = "."
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colServiceList = objWMIService.ExecQuery("Select * from Win32_Service where Name='TrafSvc'")
For Each objService in colServiceList
objTextFile.WriteLine objService.State & Date () & " " & Time ()
If objService.State = "Stopped" Then
objTextFile.WriteLine "Остановленна, запускаем... " & Date () & " " & Time ()
errReturn = objService.StartService()
End if
Next
Wscript.Sleep 18000 ' в милисекундах
Wend




© OSzone.net 2001-2012