Показать полную графическую версию : [решено] VBS Как элементарно убить процесс?
Листаю по инету и не могу разобраться, как элементарно просто, как в bat, завершить принудительно процесс на VBS?
Petya V4sechkin
22-09-2012, 18:15
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colProcessList = objWMIService.ExecQuery _
("SELECT * FROM Win32_Process WHERE Name = 'notepad.exe'")
For Each objProcess in colProcessList
objProcess.Terminate()
Next
Lucretius
21-11-2013, 20:21
Цитировать » Подскажите, как заложить список процессов в приведённый скрипт, т.е. возможно ли завершить несколько процессов с разными именами?
Lucretius
21-11-2013, 21:30
Можно. У Вас их сколько? »
Два варианта: 2 и 5.
Тогда вполне сгодится простое перечисление:
Set colProcessList = objWMIService.ExecQuery _
("SELECT * FROM Win32_Process WHERE Name = 'notepad.exe' OR Name = 'calc.exe' OR Name = 'freecell.exe'")
и т.д.
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colProcessList = objWMIService.ExecQuery _
("SELECT * FROM Win32_Process WHERE Name = 'notepad.exe'")
For Each objProcess in colProcessList
objProcess.Terminate()
Next »
Извиняюсь за некропост,специально зарегистрировался чтобы попросить помощи.
Мможно как то заставить данный скрипт циклично выполнятся в течении 60 секунд?
И есть ли возможность сделать так чтобы вместо цикличного выполнения можно было бы "промониторить" когда запустится процесс сразу же его закрыть и прекратить выполнение скрипта?
Спасибо за ответ
Мможно как то заставить данный скрипт циклично выполнятся в течении 60 секунд? »
Можно, но зачем?!
И есть ли возможность сделать так чтобы вместо цикличного выполнения можно было бы "промониторить" когда запустится процесс сразу же его закрыть и прекратить выполнение скрипта? »
Можно. Какой процесс? Каков полный путь к исполняемому файлу процесса?
Мможно как то заставить данный скрипт циклично выполнятся в течении 60 секунд? »
Можно, но зачем?!
Цитата fisfer:
И есть ли возможность сделать так чтобы вместо цикличного выполнения можно было бы "промониторить" когда запустится процесс сразу же его закрыть и прекратить выполнение скрипта? »
Можно. Какой процесс? Каков полный путь к исполняемому файлу процесса? »
Полный путь,путь в зависимости от ос может менятся
C:\Program Files\Elauncher2\game\binaries\x86\Elauncher2.exe
процесс Elauncher2.exe
а зациклить думал - так как это ехе запускается в течении секунд 20 гдето и его можно было бы так убивать,хотя и неправильно,но в силу моих знаний хочется решить хоть как нибудь эту задачу(
Полный путь,путь в зависимости от ос может менятся »
Как именно?
Как именно? »
Ну в 32 битной системе это C:\Program Files\Elauncher2\game\binaries\x86\Elauncher2.exe
а в 64 C:\Program Files (x86)\Elauncher2\game\binaries\x86\Elauncher2.exe
fisfer, попробуйте так:
Option Explicit
Dim objSWbemObjectEx
Dim strPath
With WScript.CreateObject("WbemScripting.SWbemLocator").ConnectServer(".", "root\cimv2")
For Each objSWbemObjectEx In .ExecQuery("SELECT AddressWidth FROM Win32_Processor")
With WScript.CreateObject("WScript.Shell")
If objSWbemObjectEx.AddressWidth = 64 Then
strPath = .ExpandEnvironmentStrings("%ProgramFiles(x86)%") & "\Elauncher2\game\binaries\x86\Elauncher2.exe"
Else
strPath = .ExpandEnvironmentStrings("%ProgramFiles%") & "\Elauncher2\game\binaries\x86\Elauncher2.exe"
End If
End With
Exit For
Next
If WScript.CreateObject("Scripting.FileSystemObject").FileExists(strPath) Then
.ExecNotificationQuery( _
"SELECT * FROM __InstanceCreationEvent WITHIN 1 WHERE TargetInstance ISA 'Win32_Process' AND " & _
"TargetInstance.ExecutablePath = '" & Replace(strPath, "\", "\\") & "'" _
).NextEvent.TargetInstance.Terminate
Else
WScript.Echo "Can't find file [" & strPath & "]."
WScript.Quit 1
End If
End With
WScript.Quit 0
Да,помоголо.Всё работает как часики.Большое вам человеческое спасибо!
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.