AutoHotkeyを管理者権限のウィンドウ上でも動かしたいけど管理者権限で動かしたくない場合

昔ならいざ知らず現代においてAutoHotkeyを管理者権限で動かすようなことは普通はしないのだけど、そうすると、管理者権限で実行したプログラムのウィンドウ上でAutoHotkeyが動かない。

まあ権限が低いプログラムから権限が高いプログラムを操作されたら問題なわけで、当然の挙動なんだろうけど、管理者権限のウィンドウでだけあの操作もこの操作もできない、となると不便である。

その不便にずっと甘んじていたんだけど、今度こそなんとかしようと調べ始めたら、なんとだいぶ前(2011年くらい?)から、WindowsUIAccessという機能を使って(多分)安全にこの制限を回避できるようになっていた。

元々はAHKのフォーラム上で公開されていた.ahkスクリプトを使ってどうこうやるみたいな感じだったようだが、現在ではGUIインストーラを使えばかなり簡単にできるようだ。

ということでその方法を紹介する。

  • まずインストール時に、オプションの"Add 'Run with UI Access' to context menus"をオンにしてインストールする。
  • なおインストール先はC:\Program Filesじゃないと駄目なはずだが未確認。
  • スクリプトを手動で起動する場合、コンテキストメニューから、Run with UI Accessでいい感じに動く。
  • スクリプトをスタートアップ時に自動起動などする場合(おそらくほとんどがそうだろう)、"C:\Program Files\AutoHotkey\AutoHotkeyU64_UIA.exe" <SCRIPT_PATH> /uiAccessのような形で実行する。今までの実行ファイルではなく、_UIAとついているのを使い、/uiAccessオプションを追加する、それだけ。

詳しくは以下公式ドキュメントに書いてある。

https://www.autohotkey.com/docs/Program.htm#Installer_uiAccess