Ветеран

Сообщения: 2735
Благодарности: 1699
|
Профиль
|
Отправить PM
| Цитировать
Цитата santey007:
есть конкретное имя процесса, которое плодится и запускается от определенного пользователя и если этот процесс запускает уже более 3-х экземпляров (имя одинаковое, разные ИД), то надо завершать все эти процессы с определенным именем от определенного пользователя. »
|
Минимальные изменения VBS варианта
Код: 
UserName = "ThisUser" 'Имя конкретного пользователя
NProcMax = 3 'Максимальное количество одноименных процессов. Если больше - будут удалены все
ProcName = "calc.exe" 'Имя конкретного процесса. если="" то смотрим все процессы
sQuery = "Select *From Win32_Process"
If Trim(ProcName) <> "" Then sQuery = sQuery + " Where Name=" + """" + ProcName + """"
Set Processes = GetObject("winMgmts:").ExecQuery(sQuery)
NProc = Processes.Count
ReDim AllProc(NProc, 2)
MProc = 0
For Each Process In Processes
If Process.GetOwner(User) = 0 Then
If LCase(User) = LCase(UserName) Then
MProc = MProc + 1
AllProc(MProc, 1) = Process.Name + "*" + User
AllProc(MProc, 2) = 0
End If
End If
Next
If MProc <= NProcMax Then WScript.Quit 1
i = 1
Do
i0 = i
AllProc(i0, 2) = 1
If i = MProc Then Exit Do
For j = i + 1 To NProc
If AllProc(i, 1) = AllProc(j, 1) Then
i = i + 1
s = AllProc(i, 1)
AllProc(i, 1) = AllProc(j, 1)
AllProc(j, 1) = s
AllProc(i0, 2) = AllProc(i0, 2) + 1
End If
Next
i = i + 1
If i > MProc Then Exit Do
Loop
For i = 1 To MProc
NDelProc = AllProc(i, 2) - NProcMax
If NDelProc > 0 Then
Program = Mid(AllProc(i, 1), 1, InStr(1, AllProc(i, 1), "*") - 1)
sQuery = "Select *From Win32_Process Where Name=" + """" + Program + """"
Set Processes = GetObject("winMgmts:").ExecQuery(sQuery)
For Each Process In Processes
If Process.GetOwner(User) = 0 Then
If LCase(User) = LCase(UserName) Then Process.Terminate
' If NDelProc > 0 Then
' Process.Terminate
' NDelProc = NDelProc - 1
' End If
'End If
End If
Next
End If
Next
|
-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.
Последний раз редактировалось megaloman, 25-01-2020 в 22:55.
Отправлено: 22:46, 25-01-2020
| #11
|