Windowsで選択したアプリケーションのUACプロンプトを抑制する方法

Microsoft が Windows 10 以降で UAC を少し永続化したため、一部のアプリを煩わしいプロンプトなしで実行しようとすると、少し面倒になりました。特に、テスト中の場合や、システム全体ではなく特定のアプリで UAC をすばやく回避したい場合はそうです。このガイドでは、セキュリティを完全に無効にすることなく、特定のアプリをよりスムーズに実行するために、主にRunAsInvokerフラグを使用して UAC をバイパスした実際の方法を詳しく説明します。少しハッキーですが、セットアップによっては、起動するたびに [はい] をクリックせずに済む場合があります。特に、管理者権限は必要なくても UAC の承認が必要なアプリの場合に便利です。ネタバレ: 一部のプログラムはこのフラグを無視したり、いずれにせよ管理者権限を必要とするため、奇跡は期待できません。ただし、どうしても協力してくれない頑固なアプリがある場合は、この方法が毎回管理者権限に切り替えずに実行できる可能性があります。

Windowsで特定のアプリのUACプロンプトを無効にする方法

アプリケーション互換性ツールキットを使用してプログラムの UAC を無効にする

この方法は一見やり過ぎに思えるかもしれませんが、実際にはアプリを特定の互換性設定で強制的に実行させるのに非常に効果的です。まず、Windows ADKが必要です。最新バージョンを入手してください。Application Compatibility Toolkit が含まれています。インストールする際は、 Application Compatibility Toolsのみを選択してください。これにより、互換性修正の作成に不可欠なCompatibility Administratorが提供されます。

64ビットシステムの場合は、Compatibility Administrator (x64)を実行します。アプリが32ビットの場合は、32ビット版を実行します。この操作には管理者権限が必要です。ツールを開き、「カスタムデータベース」の下で右クリックして「新しいデータベース」を選択します。データベース名(「NoUAC-Regedit」など)を入力し、新しいApplication Fixを作成します。アプリ名(例:regedit)、ベンダー(Microsoft)、実行ファイルへの正確なパス(おそらくC:\Windows\System32\regedit.exe)を入力します。

次のステップ(互換性修正)で、 RunAsInvokerのボックスにチェックを入れます。これは基本的に、Windows に権限昇格やプロンプト表示をせずにアプリを実行するように指示するものです。ツールから直接テストするには、「テスト実行」をクリックします。問題がなければ、データベース(例えばregedit_fix.sdb)を保存し、以下のコマンドを実行してコマンドラインからインストールします。

sdbinst -q c:\path\to\regedit_fix.sdb

これにより、システム全体に修正が登録されます。さあ、regedit を起動しましょう。さあ、UAC プロンプトは表示されません。ただし、この修正は、アプリが特定の操作に対して明示的に管理者権限を要求していない場合にのみ有効です。また、すべてのアプリがRunAsInvokerフラグに従うわけではありません。特に明示的に管理者権限を要求するアプリは、このフラグを無視します。

レジストリ経由でRunAsInvokerアプリフラグを有効にする

Compatibility Administrator をハッキングするのはやり過ぎだと思うなら、レジストリを使って手動で同じ動作を設定することもできます。テストや小規模な設定では、この方法の方が手軽です。基本的には、次のようにレジストリエントリを作成または編集します。

  • レジストリエディターを開く(Win + R、 と入力regedit
  • HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layersに移動します。
  • 新しいREG_SZ値を作成します。
  • 実行可能ファイルへの完全なパスを正確に名前を付けます(例:C:\Windows\regedit.exe)。
  • データをRunAsInvokerに設定する

システム全体に適用したい場合は、 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layersでも同じ操作を行ってください。もちろん、企業環境ではグループポリシーの基本設定から適用できます。すべてのマシンで手動で変更する必要はありません。ただし、このプロセスは目立たないため、レジストリエントリの編集に慣れるまで少し時間がかかることに注意してください。

RunAsInvoker モードでアプリを起動するバッチ スクリプト

これはかなりシンプルですが便利です。次の行をアプリのパスに置き換えて、*.bat* ファイルを作成するだけです。

Set ApplicationPath="C:\windows\regedit.exe" cmd /min /C "set __COMPAT_LAYER=RUNASINVOKER && start "" %ApplicationPath%"

このスクリプトをダブルクリックすると、 RunAsInvoker環境変数のおかげで、昇格を求めることなくアプリが起動します。この方法はアプリによって効果のほどは分かりませんが、レジストリの細かい変更や互換性修正を行う前に試してみるには十分簡単です。

注:すべてのアプリがこのようにUACプロンプトを無視するわけではありません。特定の動作を検知した場合や管理者権限を明示的に要求した場合に、常に昇格を要求するようにコーディングされているアプリもあります。しかし、特にプログラムのテストなど、比較的軽量な環境では、これらのトリックによってクリック回数を大幅に減らすことができます。

また、プロンプトをバイパスしたからといって、アプリが管理者権限を持つわけではないことに注意してください。システム全体に変更を加える必要がある場合は、真の管理者として実行しない限り、変更は実行できません。とはいえ、テスト目的や特定のアプリのプロンプトを一時的に無効にする場合、これらのトリックを使えば、UACをクリックする手間を省くことができます。