Computer >> 컴퓨터 >  >> 체계 >> Windows Server

Windows에서 특정 프로그램이 열리거나 닫힐 때 스크립트(프로그램) 실행

이 기사에서는 Windows에서 특정 프로그램(프로세스)을 시작하는 이벤트를 추적하고 작업(스크립트, 명령, 프로그램 실행, 이메일 보내기 등)을 수행하는 방법을 보여줍니다. 예를 들어 notepad.exe 프로세스의 시작을 추적합니다. 사용자가 메모장을 열면 Windows에서 자동으로 특정 PowerShell 스크립트를 실행합니다.

먼저 Windows에서 프로세스 감사 정책을 구성합니다. 로컬 그룹 정책 편집기(gpedit.msc)를 사용하여 독립 실행형 컴퓨터에서 감사 정책을 구성할 수 있습니다. ). AD 도메인의 컴퓨터 및 서버에 대한 정책을 구성하려면 그룹 정책 관리 콘솔(gpmc.msc ).

  1. 컴퓨터 구성으로 이동 -> Windows 설정 -> 보안 설정 -> 로컬 정책 -> 감사 정책;
  2. 감사 프로세스 추적 열기 속성을 설정하고 성공 이벤트; Windows에서 특정 프로그램이 열리거나 닫힐 때 스크립트(프로그램) 실행
  3. gpupdate /force를 실행하여 그룹 정책 설정을 적용합니다.

이제 Windows에서 프로세스를 시작할 때 EventID 4688이 있는 이벤트가 (A new process has been created ) 이벤트 뷰어 -> Windows 로그 -> 보안에 나타납니다. 이벤트는 프로세스를 실행한 사람을 보여줍니다(계정 이름 ), 프로세스 이름(새 프로세스 이름 ) 및 상위 프로세스의 이름(크리에이터 프로세스 이름 ).

Windows에서 특정 프로그램이 열리거나 닫힐 때 스크립트(프로그램) 실행

PowerShell을 사용하여 특정 프로세스별로 이벤트 로그에서 앱 시작 이벤트를 선택할 수 있습니다.

Get-WinEvent -FilterHashtable @{
LogName = 'Security'
ID = 4688
} | Select-Object TimeCreated,@{name='NewProcessName';expression={ $_.Properties[5].Value }}, @{name='User';expression={ $_.Properties[1].Value }}|where-object {$_.NewProcessName –like “*notepad.exe*”}

그 결과 이 ​​컴퓨터에서 사용자가 프로그램을 시작한 이력을 얻었습니다.

Windows에서 특정 프로그램이 열리거나 닫힐 때 스크립트(프로그램) 실행

그런 다음 EventID가 4688인 이벤트가 나타날 경우 실행할 작업 스케줄러에서 새 작업을 만듭니다.

  1. 작업 스케줄러(taskschd.msc ) 새 작업 만들기 -> 작업 만들기;
  2. 작업 이름을 제공하고 모든 사용자에 대해 실행되어야 함을 지정합니다(작업을 실행할 때 다음 사용자 계정 사용 -> BUILTIN\Users ). GPO를 사용하여 작업을 만드는 경우 다음 형식을 사용하십시오. %LogonDomain%\%LogonUser%;
  3. 작업 탭에서 수행하려는 작업을 설정합니다. 이 예에서는 PowerShell 스크립트(powershell.exe 호출)를 실행합니다. 속성 포함:-ExecutionPolicy Bypass -file "C:\PS\ProcessRunEvent.ps1 ); Windows에서 특정 프로그램이 열리거나 닫힐 때 스크립트(프로그램) 실행
  4. 그런 다음 작업을 Windows 이벤트에 바인딩합니다. 트리거로 이동 탭에서 새로 만들기를 선택합니다. -> 이벤트에서 -> 맞춤형 -> 새 이벤트 필터;
  5. 다음 창에서 다음 이벤트 필터 옵션을 지정합니다.
    이벤트 로그:Security
    이벤트 ID:4688
    키워드:Audit Success
    Windows에서 특정 프로그램이 열리거나 닫힐 때 스크립트(프로그램) 실행
  6. 그런 다음 XML 탭을 클릭하고 수동으로 검색어 수정을 활성화합니다. 옵션. 필터에 다음 줄을 추가하여 쿼리를 편집합니다. and *[EventData[Data[@Name='NewProcessName'] and (Data='C:\Windows\System32\notepad.exe')]]
  7. 다음 XML 쿼리가 표시됩니다.
    <QueryList>
    <Query Id="0" Path="Security">
    <Select Path="Security">
    *[System[Provider[@Name='Microsoft-Windows-Security-Auditing'] and Task = 13312 and (band(Keywords,9007199254740992)) and (EventID=4688)]]
    and
    *[EventData[Data[@Name='NewProcessName'] and (Data='C:\Windows\System32\notepad.exe')]]
    </Select>
    </Query>
    </QueryList>
    

    Windows에서 특정 프로그램이 열리거나 닫힐 때 스크립트(프로그램) 실행

  8. 작업을 저장합니다.

notepad.exe를 실행해 보십시오. 사용자가 메모장을 열 때마다 PowerShell 스크립트가 자동으로 실행됩니다.

예를 들어, 팝업 알림을 표시하거나 PowerShell을 사용하여 이메일을 보낼 수 있습니다.

Windows에서 특정 프로그램이 열리거나 닫힐 때 스크립트(프로그램) 실행

특정 앱을 종료한 후 백업 스크립트 등을 실행하고 싶을 때가 있습니다. 프로그램 종료를 추적하려면 이벤트 ID가 4689인 이벤트를 사용하세요. — A process has exited .

이전에 프로세스가 중지되면 자동으로 다시 시작하는 PowerShell 스크립트를 보여주었습니다. 프로세스의 실행/중지 이벤트를 추적하는 솔루션은 더 우아하며 실행 중인 Windows 프로세스를 모니터링하기 위해 PowerShell 스크립트가 필요하지 않습니다.