문제

현재 작업중 인 프로그램에 문제가 있습니다. Vista/Windows 7의 보안 증가로 인해 발생합니다. 특히 UIPI는 무결성 수준이 낮은 창이 더 높은 것과 '말하기'를 방지합니다.

제 경우에는 응용 프로그램으로 이동하기 위해 무결성 수준이 높은 창을 알리고 싶습니다. XP 또는 Windows 7에서 보안이 꺼진 상태에서 완벽하게 작동합니다.

FindWindow () 함수를 사용하는 대신 더 높은 IL 창의 HWND를 직접 설정하려고 시도했지만,이 프로그램은 잘 작동하지만 프로그램을 이동하거나 일반적으로 상호 작용할 때 실패합니다. Windowhandle은 앱에 의해 저장되어 하단 IL에서 실행되는 앱에서 내장 및 읽습니다.

나는 또한 매니페스트에서 UIACCESS를 TRUE로, 프로그램에 디지털로 서명했지만 운이 좋지는 않았다.

이 문제를 해결하는 방법에 대한 아이디어가 있습니까? 감사해요.

도움이 되었습니까?

해결책

마침내이 작업을 수행 할 수있는 방법을 찾았을 때 어려움을 겪는 사람에게도 이것을 따라갈 것이라고 생각했습니다.

IL = 무결성 레벨.

Highil은 2 개의 앱인 Highil.exe 및 Lowil.exe를 가지고 있었는데, Highil은 lowil.exe 창을 찾아 어린이 창으로 설정하고 Highil.exe에서 생성 된 영역으로 옮기고 싶었습니다. 이것은 Vista+의 UIPI에 의해 차단되었습니다.

결국 나는 Vista의 ChangeWindowMessageFilter 메소드와 Windows7의 ChangeWindowMessageFilterex를 사용하여 user32.dll에서 발견했습니다. 이러한 기능을 통해 UIPI에 구멍을 뚫어 원하는 메시지를 허용 할 수 있습니다.

RegisterWindowMessage 함수를 사용하여 몇 가지 사용자 정의 메시지를 만들었습니다.이 기능을 사용하여 Highil 및 Lowil 애플리케이션에 메소드를 등록했습니다. 라인은 다음과 같습니다.

const UINT MY_MOVEINTWINDOW_MSG = RegisterWindowMessage(_T("MyMsg.MoveWindow"));

그런 다음 lowil.exe는이 메시지를 차단하지 않고 Highil.exe 창으로 보낼 수 있습니다. 그런 다음 단순히 메시지 처리기를 추가하고 작성하는 경우였습니다.

이 방법은 High and Low IL에 모두 액세스 할 수있는 경우에만 작동합니다. MSDN에는 또한 ChangeWindowMessageFilterex 기능의 작업 예제가 있습니다. 웹 사이트

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top