맨 아래 파일 있음!!!
라이엇 뱅가드 (Riot Vanguard) 란?
라이엇 안티치트 프로그램으로 2024년 5월 리그 오브 레전드에도 적용되었다. 뭐 요새 끊이지 않는 헬퍼 문제니 핵등 여러 말이 많으니 찬성이다.
하지만 문제는 컴퓨터 실행할 때 마다 자동으로 실행해야 하며 뱅가드를 실행 종료한뒤 다시 롤클라이언트를 시작하려 하면 재부팅 해야 되는 문제, 실행되어 있지 않으면 롤을 플레이 할 수 없게 되었다.
그리고 종료한 후에도 다른 프로그램 실행시 블루스크린 발생 문제와 보안문제 때문에라도 찝찝하여 수동 실행, 종료 할 수 있도록 만들게 되었다.
해결 과정
뱅가드는 거의 대부분 `C:\Program Files\Riot Vanguard` 에 설치되어 있을 것이며 이걸 기준으로 이야기 하겠다.
해당 파일 중 `vgc.exe`와 `vgtray.exe`를 실행되는데, `vgc.exe` 는 뱅가드 프로그램이며 `vgtray.exe`는 뱅가드 실행시 아래 트레이 박스 프로그램이다. 여기서 롤 클라이언트를 실행할때 vgc가 서비스 되어있는지를 판별하고 아닐시 종료시킨다.
윈도우 버튼을 누르고 서비스라 검색할 시 이러한 화면이 뜰 것이다.
그 중 vgc라는 항목이 있는데 이걸 수동 실행해주면 뱅가드를 종료하였더라도 실행 할 수 있다.
하지만 이렇게 수동으로 하면 불편하지 않는가?
그리하여 윈도우 프로그램인 .bat 배치파일을 사용하기로 하였다.
.bat 파일 작성
bat 문법은 간단하다.
@echo off
sc start vgc
::트레이까지 띄우고 싶을 때 ::주석제거
::start /d "C:\Program Files\Riot Vanguard" /b vgtray.exe
여기서 `@echo off` 는 배치 파일 실행 시 명령어 자체를 화면에 표시하지 않겠다는 것이고
`sc start vgc` 는 `vgc` 서비스를 실행시킨다.
메모장에 작성하여 .bat파일로 변환하여 작성하면 다음부턴 이 파일만 실행하면 시작할 수 있다.
서비스 종료도 마찬가지로
@echo off
sc stop vgc
::taskkill /IM vgtray.exe /F
이렇게 하면 된다.
메모장으로 작성 후 마지막 파일명을 .txt 에서 .bat로 바꾸면 된다.
+ 추가적으로
추가적으로 이렇게 하면 그냥 cmd창이 0.1초정도 띄워졌다 사라진다. 시각적으로 이용할 수 있도록 .bat 파일에서 PowerShell을 사용하여 사용자에게 알림을 표시해 보겠다.
@echo off
:: 알림의 이름
set "btitle=Vanguard Start"
:: 알림 내용
set "text=Vanguard has been executed."
:: 알림 아이콘
set "icon=info"
(echo [void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms"^)
echo $objNotifyIcon = New-Object System.Windows.Forms.NotifyIcon
echo $objNotifyIcon.Icon = [System.Drawing.SystemIcons]::Information
echo $objNotifyIcon.BalloonTipIcon = [System.Windows.Forms.ToolTipIcon]::%icon%
echo $objNotifyIcon.BalloonTipTitle = "%btitle%"
echo $objNotifyIcon.BalloonTipText = "%text%"
echo $objNotifyIcon.Visible = $True
echo $objNotifyIcon.ShowBalloonTip(5000^)) > "%temp%\notification.ps1"
powershell -WindowStyle Hidden -noprofile -executionpolicy bypass -file "%temp%\notification.ps1"
del /q "%temp%\notification.ps1"
이렇게 작성하면 5초동안 아래와 같은 메세지가 표시되게 된다.
그렇다면 두개 파일 말고 하나의 파일로 실행되었을 때 끄고 꺼져있을때 실행할 순 없을까??
@echo off
sc query vgc | find "RUNNING" > nul
if errorlevel 1 (
echo vgc not start. vgc start.
sc start vgc
) else (
echo vgc already start. vgc stop.
sc stop vgc
)
pause
이렇게 작성하면 된다.
여기서 `sc query vgc | find "RUNNING" ` 명령은 이 명령이 실패하면, `find` 명령이 `RUNNING`을 찾지 못했을 것이다.
이 때 `errorlevel`이 1이 되며, vgc 서비스가 실행 중이 아니라는 뜻이 된다.
잘 작동하는 것 같다..
그렇다면 알림과 모든 기능을 하나로 합쳐보자.
`Running` 상태가 아닐때 실행하고 해당 메세지를 띄우면 되고, 실행상태면 중지시키기만 하면 된다.
@echo off
:: 알림 아이콘 (error, info, none, warning 중 선택)
set "icon=info"
sc query vgc | find "RUNNING" > nul
if errorlevel 1 (
set "btitle=Vanguard Start"
set "text=Vanguard has been executed."
set "action=start"
) else (
set "btitle=Vanguard Stop"
set "text=Vanguard has been stopped."
set "action=stop"
)
(echo [void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms"^)
echo $objNotifyIcon = New-Object System.Windows.Forms.NotifyIcon
echo $objNotifyIcon.Icon = [System.Drawing.SystemIcons]::Information
echo $objNotifyIcon.BalloonTipIcon = [System.Windows.Forms.ToolTipIcon]::%icon%
echo $objNotifyIcon.BalloonTipTitle = "%btitle%"
echo $objNotifyIcon.BalloonTipText = "%text%"
echo $objNotifyIcon.Visible = $True
echo $objNotifyIcon.ShowBalloonTip(5000^)) > "%temp%\notification.ps1"
powershell -WindowStyle Hidden -noprofile -executionpolicy bypass -file "%temp%\notification.ps1"
del /q "%temp%\notification.ps1"
sc %action% vgc
최대한 중복을 제거하고 `%변수%` 를 사용하여 해보았다.
잘 작동되는것 같다.
++ 뇌절까지
가만두고 보니 이 .bat 파일 너무 못생겼다.
아이콘 변경도 안되고 이참에 .exe 파일로 변환해보기로 했다.
해당 프로그램은 Bat To Exe Converter 이며 프리웨어이다. https://github.com/tokyoneon/B2E
근데 또 난관이... 뱅가드 아이콘이 없다. (뇌절 2스택)
이 까무잡잡한 아이콘이 아닌 우리가 아는 빨간색 뱅가드 아이콘이 필요하다. 그리하여...
iconsext라는 .exe에서 아이콘이미지를 추출하는 프로그램을 설치하게 되었다.
다운로드 : https://www.nirsoft.net/utils/iconsext.html
드디어 원하는 기능과 아이콘을 가진 .exe 파일을 만들게 되었다.
파일
해당 파일 첨부하겠다. 이 파일은 언제든 (라이엇 정책 변경시) 막힐 수 있으며 각 사용자 환경마다 작동이 안될 수 있다.
문제가 있다면 댓글로 알려주면 감사하겠다..
만약 .exe파일이 보안충돌을 일으킨다면 .bat 파일도 함께 올려두었으니 이걸로 대신 사용하길 바란다.
마무리
이제 쓸일 없으니 작업관리자 -> 시작프로그램에서 사용안함 체크까지 하면 마무리다.
서비스에 들어가서 vgc도 수동으로 바꾸도록 하자.
현재는 실행중이 아니더라도 롤을 실행하면 자동실행되는 경우도 있는듯하다. 종료할때 사용하자!
후기
뱅가드가 싫어서 수동으로 껐다 켰다 할 수는 없나 라는 생각으로 시작하였다. 창조는 일상에 대한 불편함에서 나온다 하지 않는가. 아무도 시도해보지 않아서 스스로 처음 .bat 문법도 사용해보고 exe프로그램도 제작하게 되었다.
다른 사람도 잘 작동하면 다행이지만 언제든 막힐 수 있으므로.. 잘 사용하시길..
'잡다한' 카테고리의 다른 글
수강신청 및 티켓팅 클릭 매크로 (With Python) (0) | 2023.01.19 |
---|