Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] VBS Как элементарно убить процесс? (http://forum.oszone.net/showthread.php?t=243187)

Startup 22-09-2012 17:47 1993134

VBS Как элементарно убить процесс?
 
Листаю по инету и не могу разобраться, как элементарно просто, как в bat, завершить принудительно процесс на VBS?

Petya V4sechkin 22-09-2012 18:15 1993154

Код:

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 2259425

Цитата:

Цитата Petya V4sechkin
Цитировать »

Подскажите, как заложить список процессов в приведённый скрипт, т.е. возможно ли завершить несколько процессов с разными именами?

Iska 21-11-2013 21:25 2259473

Можно. У Вас их сколько?

Lucretius 21-11-2013 21:30 2259484

Цитата:

Цитата Iska
Можно. У Вас их сколько? »

Два варианта: 2 и 5.

Iska 21-11-2013 21:52 2259500

Тогда вполне сгодится простое перечисление:
Код:

Set colProcessList = objWMIService.ExecQuery _
  ("SELECT * FROM Win32_Process WHERE Name = 'notepad.exe' OR Name = 'calc.exe' OR Name = 'freecell.exe'")

и т.д.

fisfer 02-11-2018 18:12 2839125

Цитата:

Цитата Petya V4sechkin
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 секунд?

И есть ли возможность сделать так чтобы вместо цикличного выполнения можно было бы "промониторить" когда запустится процесс сразу же его закрыть и прекратить выполнение скрипта?

Спасибо за ответ

Iska 02-11-2018 18:32 2839132

Цитата:

Цитата fisfer
Мможно как то заставить данный скрипт циклично выполнятся в течении 60 секунд? »

Можно, но зачем?!

Цитата:

Цитата fisfer
И есть ли возможность сделать так чтобы вместо цикличного выполнения можно было бы "промониторить" когда запустится процесс сразу же его закрыть и прекратить выполнение скрипта? »

Можно. Какой процесс? Каков полный путь к исполняемому файлу процесса?

fisfer 02-11-2018 18:42 2839135

Цитата:

Цитата Iska
Мможно как то заставить данный скрипт циклично выполнятся в течении 60 секунд? »
Можно, но зачем?!
Цитата fisfer:
И есть ли возможность сделать так чтобы вместо цикличного выполнения можно было бы "промониторить" когда запустится процесс сразу же его закрыть и прекратить выполнение скрипта? »
Можно. Какой процесс? Каков полный путь к исполняемому файлу процесса? »

Полный путь,путь в зависимости от ос может менятся
C:\Program Files\Elauncher2\game\binaries\x86\Elauncher2.exe

процесс Elauncher2.exe

а зациклить думал - так как это ехе запускается в течении секунд 20 гдето и его можно было бы так убивать,хотя и неправильно,но в силу моих знаний хочется решить хоть как нибудь эту задачу(

Iska 02-11-2018 19:18 2839144

Цитата:

Цитата fisfer
Полный путь,путь в зависимости от ос может менятся »

Как именно?

fisfer 02-11-2018 19:23 2839146

Цитата:

Цитата Iska
Как именно? »

Ну в 32 битной системе это C:\Program Files\Elauncher2\game\binaries\x86\Elauncher2.exe
а в 64 C:\Program Files (x86)\Elauncher2\game\binaries\x86\Elauncher2.exe

Iska 02-11-2018 19:56 2839152

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


fisfer 02-11-2018 20:31 2839164

Да,помоголо.Всё работает как часики.Большое вам человеческое спасибо!


Время: 10:48.

Время: 10:48.
© OSzone.net 2001-