none
windows7 C# SetWindowHookex RRS feed

  • 질문

  • 개발 완료되어 사용중인 application 이 Windows7으로 OS 변경에 따라 사용이 불가한 상태입니다.

    키보드 후킹과 관련된 내용이며, User32.dll의 SetWindowHookex API를 사용하고 있습니다.

    자료를 찾아본 결과 windows7 이상에서는 SetWindowHookex API 사용시 OS에서 일정시간이후 해당 Hook을 제거하는걸로 알고있습니다.

    폐쇄망에서 대민서비스를 제공해야하는 프로그램이며, 수정 변경하기엔 굉장히 시급한 사안이라 문의드립니다.

    Windows7에서 보안정책상 SetWindowHookex API가 사용가능하도록 즉시 적용 가능한 방안을 주시면 감사하겠습니다.

    적용후 수정 개선 방안으로 키보드 후킹에 사용가능한 API가 있다면 방법을 함께 알려주시면 감사하겠습니다.


    빠른 답변 부탁드립니다.

    삼원FA 기술연구소 정문교선임 (010-4145-8458)

     mgjung   samwonfa.com

    • 편집됨 정문교 2018년 7월 11일 수요일 오전 9:27
    2018년 7월 11일 수요일 오전 2:29

답변

  • OS에서 일정 시간 이후 Hook을 제거하는 것은 아닙니다. SetWindowsHookEx로 설치한 callback 함수를 OS가 호출했을 때 300ms 내에 함수 반환을 하지 않으면 time-out처리를 하는데, 그 time-out 횟수가 11번째가 되었을 때 성능상의 이유로 해당 Hook을 제거하는 것입니다.

    따라서, 별다르게 callback 함수에 문제가 없었다면 Hook이 제거되는 경우는 없으니 그냥 쓰셔도 될 것입니다

    Global hooks getting lost on Windows 7
    ; https://blogs.msdn.microsoft.com/alejacma/2010/10/14/global-hooks-getting-lost-on-windows-7/

    2018년 7월 16일 월요일 오전 1:05