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 |