2013-04-09 7 views
11

다른 응용 프로그램에 포커스가있을 때 바로 가기 키를 사용하여 표시하고 숨길 수있는 오버레이 종류의 창을 가진 응용 프로그램을 프로그래밍했습니다. 다른 응용 프로그램은 관리자 권한으로 실행되는 DirectX 게임입니다.관리자 권한이있는 응용 프로그램에서 비 관리자 응용 프로그램으로 키보드 입력을받는 방법은 무엇입니까?

다른 응용 프로그램에서 단축키를 눌렀을 때 알림을 받으려면 3 가지 가능한 해결책을 시도했습니다. 그 중 2 가지는 작업이지만 관리자 권한이 필요합니다. 그것은 일종의 허용이지만, 나는 오히려 그 특권을 필요로하지 않는 솔루션을 갖고 싶어합니다. TeamSpeak와 같은 응용 프로그램은 관리자 권한으로 실행하지 않고도 입력을 관리 할 수 ​​있으므로 방법이 있어야합니다. 나는 이미 시도 무엇

:

  1. RegisterHotkey - 그것은에있는 동안 다이렉트 창을 작동하지 않기 때문에 적합하지 않습니다.
  2. SetWindowsHookEx - 일반 키보드 후크로 작동하지만 관리자 권한으로 만 작동합니다.
  3. GetAsyncKeyState - 지정된 핫키를 확인하지만 관리자 권한이없는 것은 아닙니다.

그래, 내가 생각할 수있는 것이 더 이상 없기 때문에 다른 솔루션에 대한 아이디어를 제공 할 수 있다면 정말 감사 할 것입니다 ... 저는 Delphi를 사용하고 있지만 Windows API 어쨌든 솔루션 특정 언어 것입니다 생각하지 않습니다.

답변

4

TeamSpeak에서 단축키로 DirectInput을 사용한다고 생각합니다. 이미 DirectX를 사용하고 있다면 당신에게 적합합니다. 상승 된 프로그램과의 상호 작용에 관해서는 TeamSpeak이 사용하는 유일한 해결책은 uiAccess=true을 설정하는 응용 프로그램 매니페스트를 포함하는 것입니다. 이렇게하면 관리자로 응용 프로그램을 실행할 필요없이 UIPI를 우회 할 수 있습니다. 이를 위해

http://msdn.microsoft.com/en-us/library/bb756929.aspx

는 응용 프로그램이 인증 코드는
  • 보호 된 디렉토리에 있어야합니다 응용 프로그램 (\의 ProgramFiles \, \ system32를)
  • 을 체결해야합니다

    • 몇 가지주의가 작동하는

    응용 프로그램에 자체 서명 할 수 있습니다 (대안은 비용이 많이 들지만!)하지만 인증서를 배포해야합니다. 수동으로 설치하고 해당 응용 프로그램을 실행중인 모든 시스템에 설치하십시오.

    +1

    입력 해 주셔서 감사합니다. 적절한 해결책 인 것 같습니다. 그러나 내가 읽은 것에서, 설치 프로그램과 함께 자체 서명 인증서를 제공하는 것은 잠재적 인 보안 위험이며, 나는이 문제에 대한 더 깊은 통찰력을 가지고 있지 않기 때문에 차라리 가지 않을 것입니다. 그래도 틀렸어. – DNR

    +0

    @HeinaBaumstamm 사용자가 전체 관리자 권한으로 uiAccess를 사용하여 응용 프로그램을 실행하는 것이 더 안전하다고 가정합니다. 두 경우 모두 맬웨어를 훼손하지 않았 음을 신뢰해야합니다. 그렇지 않으면 응용 프로그램이 외부 악용에 대한 진입 점이 될 확률이 최소화됩니다. 직관적 인 관리자보다 uiAccess를 사용하면 버그로 인해 발생할 수있는 실수로 인한 피해가 애플리케이션에 더 제한적입니다. 정말 편리함과 신뢰의 문제입니다 ... 프로그램을 누가 사용할 것인가에 달려 있습니다. –