2009-10-01 10 views
5

Windows XPで何年もうまく機能しているシステム全体のキーボードフックDLLがあります。Vista以上のシステムワイドキーボードフック

しかし、ある種のWindows(Vista Home Premium、Windows 7など)では、フックが全く機能しないか、単にインストールされたアプリケーション内でローカルにしか動作しないように見えますそれ。

SetWindowsHookExの呼び出しで、WHキーボードボードをWHキーボードボードに変更することは、インターネット上のいくつかの場所で提案されていますが、試してみるとこれは役に立ちません。フックタイプをWH-KEYBOARD-LLに変更するだけでなく、変更が必要なことはありますか?

(PS:私はこれが正確であると仮定しています、それは、Delphiで定義されていないことから、13とWH-KEYBOARD-LLを定義する必要がありました)

+0

http://pinvoke.net/default.aspx/Enums/HookType.htmlによると、「WH_KEYBOARD_LL」は13です。 –

答えて

8

フックをホスティングしているプロセスが同じであることを確認しますフックしようとするアプリケーションの特権レベル。キーボードやその他のフックはセキュリティ上のリスクが高いため、Vista以降は、一般的な特定のセキュリティコンテキスト内のプロセスでシステム全体のフックのみを許可するように変更されました。つまり、ユーザー権利でフックホストプロセスを開始すると、同じ特権レベルのプロセスのみがフックされます。ユーザーレベルのプロセスが管理者レベルのプロセスにコードを注入できないようにするため、これを考えると意味があります。それは非常に多くのレベルで悪いです。