Windows 7
 Computer >> コンピューター >  >> システム >> Windows 7

Windows 10で特定のアプリだけUACプロンプトを無効にする方法|RunAsInvokerフラグの使い方

本記事では、ユーザーアカウント制御(UAC)サービスを完全に無効にすることなく、特定のアプリケーションに対してのみUACプロンプトを選択的に無効化する方法を解説します。RunAsInvoker互換性フラグを利用して、単一のアプリでUACをオフにする複数の手法を紹介します。

ユーザーアカウント制御(UAC)は、管理者権限を必要とする操作を実行する際にユーザーへ確認を求める仕組みです。ウイルス、トロイの木馬、ワーム、ルートキットなど、さまざまな脅威からWindowsを守る非常に有効なメカニズムです。しかし、頻繁に表示されるUACウィンドウを煩わしく感じるユーザーも多く、このセキュリティ機能を丸ごと無効化してしまうケースがあります。ただし、Microsoftやセキュリティ専門家はUACの無効化を強く推奨していません。

RunAsInvokerフラグを使用すると、アプリケーションは親プロセスから継承したトークンで起動されます。これにより、アプリケーションマニフェストの処理やインストーラーの検出がキャンセルされ、UACプロンプトが表示されなくなります。なお、このパラメータは管理者権限を付与するものではなく、単にUACの確認画面をバイパスするだけである点に注意してください。

例として、レジストリエディター(regedit.exe)のUACプロンプトを無効にしてみましょう。ローカル管理者権限を持つアカウントであっても、このユーティリティを起動するとUACによる確認画面が表示されます。

Windows 10で特定のアプリだけUACプロンプトを無効にする方法|RunAsInvokerフラグの使い方

システム設定やファイルの変更に管理者権限が必要なプログラムの場合、UACを無効にしてもアプリケーション内のユーザー権限は昇格しません。プログラムは引き続き現在のユーザー権限で動作し、変更を行う権限がない場合、その操作は実行できません。また、「管理者として実行」モードでのみ動作し、RunAsInvoker互換性フラグを無視する一部のアプリケーションも存在します。

目次

  • Application Compatibility Toolkitを使ってプログラムのUACを無効にする
  • レジストリでRunAsInvokerフラグを有効にする
  • RunAsInvokerモードでアプリを起動するバッチファイル

Application Compatibility Toolkitを使って特定プログラムのUACを無効にする

まず、Windows ADK(Windows Assessment and Deployment Kit)に含まれるApplication Compatibility Toolkitをインストールします。最新版のWindows ADK for Windows 10を公式サイトからダウンロードしてください。

adksetup.exeを実行し、インストール時(インターネット接続が必要です)にApplication Compatibility Toolsのみを選択します。

Microsoft Application Compatibility Toolsは、新しいWindowsバージョンへの移行時に発生するアプリケーションの互換性問題を修正するための無料ツールセットです。

Windows 10で特定のアプリだけUACプロンプトを無効にする方法|RunAsInvokerフラグの使い方

システムには32ビット版と64ビット版の2種類のApplication Compatibility Administratorが用意されています。UAC要求を無効にしたいアプリケーションのビット数に応じて、適切なバージョンを実行してください。

Windows 10で特定のアプリだけUACプロンプトを無効にする方法|RunAsInvokerフラグの使い方

Compatibility Administrator(32-bit)を管理者権限で実行します(要管理者権限!)。左側のCustom DatabasesノードでNew Databaseを右クリックし、Create New → Application Fixを選択します。

Windows 10で特定のアプリだけUACプロンプトを無効にする方法|RunAsInvokerフラグの使い方

次のウィンドウで、アプリケーション名(regedit)、ベンダー名(Microsoft)、実行ファイルへのパス(C:\Windows\System32\regedit.exe)を入力します。

Windows 10で特定のアプリだけUACプロンプトを無効にする方法|RunAsInvokerフラグの使い方

設定ウィザードの次の画面(Compatibility Mode)はNextを押してスキップします。Compatibility Fixes画面でRunAsInvokerオプションにチェックを入れます。

Test Runボタンを押せば、アプリがUACなしで起動できるかどうかを事前に確認できます。

Windows 10で特定のアプリだけUACプロンプトを無効にする方法|RunAsInvokerフラグの使い方

Matching Informationダイアログでは、どのアプリケーションパラメータを照合するか(バージョン、チェックサム、サイズなど)を指定できます。ここでは、Windows 10の次回アップデート後に互換性パッチファイルを作り直さずに済むよう、COMPANY_NAME、PRODUCT_NAME、ORIGINAL_FILENAMEのオプションにチェックを入れたままにしました。

Windows 10で特定のアプリだけUACプロンプトを無効にする方法|RunAsInvokerフラグの使い方

ヒント:ハッカーによる実行ファイルのなりすまし(スプーフィング)から守るため、ファイル実行時に追加の検証(CHECKSUM、FILE_VERSION、FILE_SIZEなど)を要求することもできます。ただし、追加チェックを行うとアプリの起動速度が低下する点には注意してください。

Finishをクリックし、互換性修正パッケージの保存先ファイル名(例:regedit.sdb)を指定します。このファイルには、指定した互換性オプションでアプリケーションを起動するための設定情報が含まれます。

Windows 10で特定のアプリだけUACプロンプトを無効にする方法|RunAsInvokerフラグの使い方

あとは、この互換性修正パッケージを対象アプリケーションに適用するだけです。Compatibility Administratorコンソールから(メニューで「Install」を選択)、またはコマンドプロンプトから適用できます。

Windows 10で特定のアプリだけUACプロンプトを無効にする方法|RunAsInvokerフラグの使い方

コマンドプロンプトから適用する場合は、管理者として昇格したコマンドプロンプトで以下のコマンドを実行します。

sdbinst -q c:\ps\regedit.sdb

正しく実行できれば、パッケージのインストール成功を示すメッセージが表示されます。

Installation of regedit complete.

Windows 10で特定のアプリだけUACプロンプトを無効にする方法|RunAsInvokerフラグの使い方

パッケージのインストール後、「プログラムと機能」の一覧に対応するエントリが表示されます。

Windows 10で特定のアプリだけUACプロンプトを無効にする方法|RunAsInvokerフラグの使い方

次に、ローカル管理者権限のないユーザーセッションでアプリケーションを起動してみてください。今度はUAC要求なしで起動するはずです。

続いて、起動したアプリケーションの権限を確認しましょう。タスクマネージャーを開き、「プロセス」タブで「昇格(Elevated)」列を追加します。regedit.exeプロセスが非特権モード(Elevated = No)でユーザーとして起動していることを確認してください。

Windows 10で特定のアプリだけUACプロンプトを無効にする方法|RunAsInvokerフラグの使い方

この状態のレジストリエディターでは、ユーザーは自分自身のレジストリキーや値しか編集できません。システムのHKLMキーで何かを編集・作成しようとすると、「必要なアクセス許可がありません」というエラーが表示されます。

Windows 10で特定のアプリだけUACプロンプトを無効にする方法|RunAsInvokerフラグの使い方

この互換性修正は、グループポリシー(GPO)を使ってドメイン内のすべてのユーザーコンピューターに配布することも可能です。これにより、Active Directoryドメイン内の複数台のPCで、特定のアプリケーションに対するUACチェックを一括して無効化できます。

互換性修正を削除するには、次のコマンドを実行します。

sdbinst –u c:\ps\regedit.sdb

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

Windows 10/8.1/7では、レジストリ経由でRUNASINVOKER互換性フラグを有効にすることもできます。この互換性フラグは、特定のユーザーに対しても、コンピューターの全ユーザーに対しても設定可能です。

たとえばregeditの場合、次のレジストリキー HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers に、新しいレジストリ値(REG_SZ)を作成します。

  • 値の名前:C:\windows\regedit.exe
  • 値のデータ:RunAsInvoker

Windows 10で特定のアプリだけUACプロンプトを無効にする方法|RunAsInvokerフラグの使い方

ローカルコンピューターのすべてのユーザーに対してアプリケーション互換モードを有効にしたい場合は、別のレジストリキーに同じ値を作成します。

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers

ドメイン環境では、GPOを使ってこれらのレジストリ設定をユーザーへ配布・展開できます。

RunAsInvokerモードでアプリを起動するバッチファイル

管理者権限なしでUACプロンプトをバイパスしてプログラムを起動する方法は、ほかにもあります。

以下のコードを含む.batファイルを作成するだけでOKです。

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

Windows 10で特定のアプリだけUACプロンプトを無効にする方法|RunAsInvokerフラグの使い方

このbatファイルを一般ユーザーで実行すると、指定したアプリケーションがUACプロンプトなしで起動します。

まとめ

今回は、ユーザーアカウント制御(UAC)を完全に無効にすることなく、特定のプログラムだけUACを無効化する方法を解説しました。これにより、管理者以外のユーザーでも、UACプロンプトの表示や管理者パスワードの入力なしにWindowsアプリケーションを実行できるようになります。セキュリティとのバランスを保ちながら、業務の利便性を向上させたい場合にぜひ活用してください。

  1. Windows 10でMicrosoft互換性テレメトリを無効にする方法|CPU使用率が高いときの対処法

    Windows 10のPCで「Microsoft Compatibility Telemetry(Microsoft互換性テレメトリ)」というプロセスがCPUリソースを大量に消費して困っていませんか?実はこれは多くのユーザーが経験しているよくある問題です。タスクマネージャーを確認すると、このプロセスのCPU使用率が50%を超えているケースもあります。また、「カスタマー エクスペリエンス向上プログラム」や「アプリケーション エクスペリエンス」といった関連プロセスを目にした方もいるでしょう。これらが何のためのもので、システムにどのような影響を与えているのか、疑問に感じるのは自然なことです。 Mic

  2. Windows 10でUAC(ユーザーアカウント制御)を無効にする4つの方法

    Windows 10を使用していると、「このアプリがデバイスに変更を加えることを許可しますか?」という通知とともに「はい」「いいえ」の2つの選択肢が表示される場面に遭遇したことがあるでしょう。 これこそがUAC(ユーザーアカウント制御)の主な役割です。UACは、サードパーティ製アプリが隠れたマルウェアやウイルスをデバイスに持ち込むのを防ぐセキュリティ機能であり、安全性の観点から非常に有用です。通知が表示されると同時に、UACはデバイス上にセキュアな環境を構築し、第三者のソフトウェアがシステム設定を勝手に変更できないようにします。 ただし、UACのせいで特定のアプリが正常に動作しなくなるといっ