Option Explicit

Dim strComputer
strComputer = "."

'기본 Object 가져오기
Dim Shell : Set Shell = WScript.CreateObject("WScript.Shell")
Dim FSO : Set FSO = CreateObject("Scripting.FileSystemObject")
Dim objWMIService : Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Dim colMonitorCreateProcessesEvent : Set colMonitorCreateProcessesEvent = objWMIService.ExecNotificationQuery("select * from __InstanceCreationEvent within 1 where TargetInstance isa 'Win32_Process'" )
Dim colMonitorDeleteProcessesEvent : Set colMonitorDeleteProcessesEvent = objWMIService.ExecNotificationQuery("select * from __InstanceDeletionEvent within 1 where TargetInstance isa 'Win32_Process'" )

'CMD 윈도우 98에서도 적용 가능하게 COMSPEC으로 가져온다.
Dim COMSPEC : COMSPEC = Shell.ExpandEnvironmentStrings("%comspec%")

'메인 함수 실행
Call MainFunction()

Sub MainFunction
'중복 실행 방지 코드 - vbs 파일명을 입력합니다.
If( IsExistSameVBS( "ProcessEvent.vbs" ) ) Then
Wscript.Quit
End If

Dim strProcessName

strProcessName = "msedge.exe"

Do While True

Call ProcessCreatedEvent(strProcessName)
Wscript.Sleep( 100 )
Loop

Wscript.Quit
End Sub


Sub ProcessCreatedEvent(strProcessName)
' Terminate a Process

Dim colProcessList, objProcess
Set colProcessList = objWMIService.ExecQuery("Select * from Win32_Process Where Name = '"+strProcessName+"'")
For Each objProcess in colProcessList
Dim objLastestProcess : Set objLastestProcess = colMonitorDeleteProcessesEvent.NextEvent
'If( StrComp(Lcase(objLastestProcess.TargetInstance.Name), Lcase(strMonitorProcessName), 1) = 0 ) Then
'프로세스 종료
objProcess.Terminate()
' End If
Next
End Sub
Function IsExistSameVBS( strFileName )
IsExistSameVBS = False
Dim nSameVBSCount : nSameVBSCount = 0

Dim colProcessList, objProcess
Set colProcessList = objWMIService.ExecQuery("SELECT * FROM Win32_Process WHERE Name = 'wscript.exe' OR Name = 'cscript.exe'")
For Each objProcess in colProcessList
If InStr( Lcase(objProcess.CommandLine), Lcase(strFileName) ) Then
nSameVBSCount = nSameVBSCount + 1
End If
Next
If( nSameVBSCount > 1 ) Then
IsExistSameVBS = True
Wscript.echo strFileName & " 은 이미 실행중인 스크립트 입니다."
End If
End Function

'기타 학습' 카테고리의 다른 글

ebms 서버 구성도  (0) 2025.06.05
JMeter 웹서버 부하테스트  (0) 2024.05.22
파일 첨부  (0) 2024.05.22
멘딕스 강의  (0) 2023.11.22
멘딕스 1차 시험정보  (0) 2023.11.21

+ Recent posts