
alt-ime-ahkをPC起動時に管理者権限で起動させる方法を、ネットで調べていくつか試してみたが、どれも上手くいかなかった。AIに聞きながら設定したら無事に起動できたので、備忘録として残しておく。
alt-ime-ahkとは
alt-ime-ahkとは、左ALTでIMEオフ、右ALTでIMEオンに切り替えてくれる便利なスクリプトのこと。
なぜ管理者権限で起動する必要があるのか
alt-ime-ahkを普通に起動すると、管理者権限で動いているアプリの上では切り替えが効かない。タスクマネージャーや、管理者として実行したターミナルなどがそれにあたる。
これはWindowsの仕様で、通常権限のプログラムから管理者権限のウィンドウにはキー操作を送れないためだ。どのウィンドウでも確実に使うには、alt-ime-ahk自体を管理者権限で起動しておく必要がある。
要は、アプリによってIMEのオンオフができたりできなかったりするので、管理者権限で起動させておいたほうがストレスが少ないということ。
スタートアップフォルダではダメな理由
自動起動といえばスタートアップフォルダにショートカットを置く方法が定番だ。しかし、ショートカットに「管理者として実行」を設定しても、ログオン時はUAC(ユーザーアカウント制御)にブロックされて起動しない。
そこで今回はタスクスケジューラを使う。タスクスケジューラなら「最上位の特権で実行する」設定ができるので、UACの確認なしに管理者権限で自動起動できる。
AutoHotKeyのインストール
AutoHotkeyのv1.1をダウンロードしてインストールする。
最新のv2ではなくv1.1を選ぶのは、alt-ime-ahkがv1系の書き方で作られていてv2では動かないためだ。
alt-ime-ahkのダウンロード
alt-ime-ahkをダウンロードし、好きなフォルダに設置する。
私は次の場所に設置した。
C:\Users\ユーザー名\OneDrive\ドキュメント\AutoHotkey\
- alt-ime-ahk.ahk
- IME.ahk
OneDriveのファイルが「オンライン時のみ利用可能」の状態だと、PC起動直後に読み込めず失敗することがある。OneDrive内に置く場合は、フォルダを右クリックして「常にこのデバイス上に保持する」にしておくと安心だ。心配なら C:\Tools\ など、OneDrive外の場所に置いてもいい。
タスクスケジューラの設定
スタートメニューで「タスクスケジューラ」と検索して起動し、右側の「タスクの作成」をクリックする。
全般

名前は「alt-ime-ahk」など分かりやすいものでOK。
「最上位の特権で実行する」に必ずチェックを入れる。 これが管理者権限で起動させるための一番重要な設定となる。
トリガー

タスクの開始を「ログオン時」にする。
操作

操作は「プログラムの開始」のまま、以下の3項目を入力する。
プログラム/スクリプト
プログラム/スクリプトの個所に、先ほどインストールしたAutoHotkeyのU64を指定する。
"C:\Program Files\AutoHotkey\v1.1.37.02\AutoHotkeyU64.exe"
64bit版WindowsならU64、32bit版WindowsならU32を指定する。今のWindowsはほぼ64bit版なので、基本はU64でOKだ。
引数の追加
"C:\Users\ユーザー名\OneDrive\ドキュメント\AutoHotkey\alt-ime-ahk.ahk"
ダブルクォーテーションで括ること。 パスに空白などが含まれていても正しく読み込ませるため。
開始
C:\Users\ユーザー名\OneDrive\ドキュメント\AutoHotkey
こちらはダブルクォーテーションで括らないこと。末尾に \ も付けないこと。
alt-ime-ahk.ahkは同じフォルダのIME.ahkを読み込んでいる。そのため、作業フォルダを指定しておかないと起動に失敗することがある。
いくらググってもうまくいかなかった理由がコレだった。空白にしてもAHKがエラーを吐くし、ダブルクォーテーションを付けてもエラーが出ていた。環境によっては空白のまま起動するケースもあるのだろうから、うまくいかない場合、開始の設定をよく確認して試してほしい。
条件

「コンピューターをAC電源で使用している場合のみタスクを開始する」のチェックを外す。
ここにチェックが入っていると、ノートPCをバッテリーで起動したときにalt-ime-ahkが立ち上がらない。
設定

タスクを停止するまでの時間(既定3日)のチェックを外す。
初期設定では「3日間」になっていて、PCを3日以上つけっぱなしにするとalt-ime-ahkが勝手に終了してしまう。
動作確認

登録したタスクを右クリックし、「実行する」を選択する。
正常に起動すれば、画面右下のタスクトレイ(通知領域)にAutoHotkeyの緑の「H」アイコンが表示される。
念のため、次の2点も確認しておくと確実だ。
- PCを再起動して、自動で起動するか
- タスクマネージャーを開いた状態で、ALTによるIMEの切り替えが効くか
私はこの設定で正常に起動するようになった。上手くいかない場合は、各項目の入力ミス(特にダブルクォーテーションの有無)を見直してみてほしい。
Alt+Tabでの切り替えが効きにくい場合の対処法
タスクスケジューラから起動するようにしたら、Alt+Tabでのウィンドウ切り替えが効きにくくなった。管理者権限ではちゃんと起動している。ところが、ファイルを右クリックして「管理者として実行」で起動すると正常に動く。
原因:タスクスケジューラで起動すると優先度が下がる
タスクスケジューラから起動したプログラムは、優先度が「通常以下」に下げられる。しかもこの優先度は、タスクスケジューラの画面からは変更できない。
alt-ime-ahkはキー入力を常に監視しているスクリプトなので、優先度が低いと反応が遅れてしまう。その結果、Alt+Tabのようなキー操作がうまく処理されなくなっていたようだ。
対処法:スクリプトで優先度を上げる
alt-ime-ahk.ahkの #Include IME.ahk の下(先ほどの Menu, Tray, Tip の行の下でOK)に、次の1行を追加する。
Process, Priority,, High
これで、どこから起動してもスクリプト自身が優先度を「高」に上げてくれる。
保存したら、タスクトレイのアイコンを右クリックして「Exit」で終了する。そのあと、タスクスケジューラで登録したタスクを右クリックし、「実行する」で起動し直す。
私はこれでAlt+Tabが正常に切り替わるようになった。
管理者権限で起動しているか確認する
アイコンが表示されただけでは、管理者権限で起動しているかどうかまでは分からない。そこで、アイコンにマウスを乗せると権限が表示されるようにしておくと便利だ。
alt-ime-ahk.ahkをメモ帳で開き、#Include IME.ahk の行のすぐ下に次の1行を追加する。
Menu, Tray, Tip, % "alt-ime-ahk " . (A_IsAdmin ? "(admin)" : "(normal)")
保存したら起動し直し、タスクトレイのアイコンにマウスを乗せる。「(管理者)」と表示されれば、管理者権限で起動できている。
コメント