記事カテゴリ

ユーザー機能


 2024年3月29日(金) 23:10 JST

管理者権限で動作するアプリに対するキーボード操作

Windows関係
  • 投稿者:
  • 表示回数
    24,032

Windows7の出荷も近くなり、7RCやVista上でアプリを使っている人も増えてきたのではないかと思う。

これらのOSにはUAC(User Access Control)と言う機能があり、セキュリティ向上の役割を果たしているというのは周知の事実であると思う。が、この機能は結構めんどくさい物であり、 OFFにするとXPと同様になるがセキュリティが低くなるジレンマに追いやられる。

くろねこのPCではUACはONであり、UACが動作していると正常に動作しないアプリに対しては個別に管理者権限で起動させるなどの対策を行っている。通常のアプリであれば基本的にそれ程問題にならないのであるが、これがMMOやFPS系のゲームだとマウスに割り当てたキーボード操作が正常に行えず、XPなどに対して不利になることは明白である。

また、SideWinderシリーズなどのゲーミングマウスでは、
マウスが管理者モードに対してキーボード操作出来ることは必須(当然)である
といえる。

この問題への対応としてLogitech(日本ではロジクール)のMX-Revolutionを使用しているときには、SetPointを管理者として実行していた。しかし、Microsoftの場合には設定画面が表示されるだけでそのあと常駐しているように見えない。なにを管理者権限で実行して良いのかちょっと首をかしげる。実はIntelliPointをインストールした際にデスクトップに出来るMicrosoft マウスこれを起動すると影でipoint.exeと言うプログラムが動作する。このプログラムを管理者権限で動作させればSetPointの際と同様に管理者権限で動作するプログラムに対してもキー送信できるようになるのだが...

ちょっと落とし穴があり、起動時には管理者権限で実行することが出来なかった。ipoint.exeのプロパティから互換性タブにて、「特権レベルを管理者としてこのプログラムを実行する」と変更しても起動時に管理者権限で動作しなかったし、スタートアップにショートカットを作成しそのプロパティを変更してもダメだった。

Microsoftのサポート担当の方が良い方法を考えてくれたので、ここで公開することにする。
おそらく他の起動時に管理者権限が必要なアプリに応用可能だと思うので、起動時にUACのダイアログが出ることに不快だと思う方は試されると良いだろう。

起動時にプログラムを管理者権限(最上位の特権で実行する)方法。

下記のタスクスケジューラによるタスクの作成の前に、msconfigの[スタートアップ]タブからipoint.exeを見つけて動作を無効化しておいてください(チェックOFF)。もしくはスタートアップフォルダから削除願います。
理由:下記の方法で作成するタスクによる起動よりもスタートアップのタイミングが早く、まずスタートアップによってipointが起動します。このため後からタスクスケジューラがipointを起動しようと試みた際には二重起動防止プロセスにより無効化されるからです。

  1. コンピュータの管理を起動する
    1. コンピュータの管理の起動手順

      コンピュータの管理が起動したら、左のペインのタスクスケジューラをクリック
    2. タスクスケジューラ選択後の画面
  2. タスクスケジューラで基本タスクを作成する
    1. 基本タスクの作成
      任意で名称を設定する
    2. タスクトリガーログイン時を選択する
    3. 操作
      起動を選択する
    4. プログラムの開始
      ipoint.exeのパスを入力する。参照を使っても良い。起動時引数などは必要でない。
      上記の様にパスだけでも実行することは可能だが、優先順位が普通以下になるという問題が確認された
      このため、このテキストボックスにはipoint.exeのパスの前に「cmd.exe /c start "ipoint" /abovenormal」を付ける。
      例1)cmd.exe /c start "ipoint" /abovenormal "C:\Program Files\Microsoft IntelliPoint\ipoint.exe"
    5. 完了
      設定内容を確認し、OKをクリック
  3. 出来たタスクのプロパティを変更する
    1. プロパティを表示する
    2. 最上位の特権で実行するにチェックしてOKをクリック

以上で次回ログイン時からIntelliPointが管理者権限で実行され、管理者権限で動作しているアプリに対してもキーボード操作を行うことが出来る。

10/01/14追記
スタートアップよりipointを無効化しておかないと二重起動防止プロセスによりタスクスケジューラによるipointの起動が制限される。
このため上記方法をとっても管理者権限でipointが起動しないと言う問題が発生するのでその回避方法を追記。
(読者様より指摘をいただきました。)

11/07/19追記
以前から気づいてはいたのですが…
Microsoft IntelliPoint 8.0.1以降、上下のサイドボタンにキーボード操作を割り当てても動作しないことが確認されています。この現象がすでにマイクロソフト社に確認されている不具合なのかそうではないのかわかっておりません。8.1になっても同様の現象が確認されることから、おそらく気づいていないのか、もしくはくろねこの環境に起因する問題であると推測されます。先日、OSのフォーマットを行い確認してみたのですがこの現象が確認出来たため、マイクロソフト社に問い合わせしてみようと思います。

11/08/16追記
MSさんにお問い合わせしました。 MSさんの方では同様の現象は発生しないと言うことでこの3日間ほど双方で調査した結果、RoboFormとバッティングしていることがわかりました。
と言うことで、RoboFormにも修正依頼をかけないとだめそうでしたΣ(>_<;)

14/05/11追記
最新のドライバ「マウス キーボード センター」を使用したところ、RoboFormとの問題は発生しないことが確認できました。すでに1年以上使用していますが、問題は発生していません。ちなみに環境はWindows8.1に上げています。

トラックバック

このエントリのトラックバックURL:
https://www.blackcat.xyz/trackback.php/090804_SendKeys_under_UAC

以下のコメントは、その投稿者が所有するものでサイト管理者はコメントに関する責任を負いません。