요즘 Window10에서 게임을 실행시키면 죄다 관리자 권한으로 실행되는데
Window10에서 생긴 UIPI를 활용하기 위함입니다.
UIPI란 낮은 권한의 프로그램이 높은 권한의 프로그램에 메시지를 보내거나
후킹하는 것을 못하도록 막는 보안체계입니다.
떄문에 이것을 고려하지 않고 매크로를 만들면 게임 밖에서의 테스트는 성공하지만
막상 게임을 켜고 테스트해보면 먹통이 되어버리죠.
하지만 당연하게도 이를 뚫는 방법이 있습니다.
제가 처음 해결방법을 발견한 글은
https://stackoverflow.com/questions/17645204/sendinput-fail-because-of-uipi
에 있습니다
저는 요약해서만 적어놓을테니 자세히 보려면 링크의 글을 참조해주세요
뚫는 방법
1. 인증서 생성
Visual Studio 개발자 CMD를 켠 후에
>makecert -r -pe -n "CN=Test Certificate - For Internal Use Only" -ss PrivateCertStore testcert.cer
>certmgr.exe -add testcert.cer -s -r localMachine root
>CertMgr.exe /add testcert.cer /s /r localMachine trustedpublisher
을 입력해서 인증서를 생성합니다.
2. 프로그램 매니페스트 생성
위 링크의 파일을 그대로 추가하거나 직접 만들어서 적어도 됩니다.
3. 프로그램을 생성한 인증서로 서명시키기
Visual Studio 개발자 CMD에서
SignTool sign /v /s PrivateCertStore /n "Test Certificate - For Internal Use Only" /t http://timestamp.verisign.com/scripts/timestamp.dll "파일경로"
를 입력하여 서명한다
4. 프로그램을 관리자 권한으로 실행시킨다
Done