Windows UACの設定をコマンドで確認、設定する

必要なスキル

Windowsのコマンド実行ができる
レジストリ設定についての理解が多少できる

概要

UAC(User Account Control)の設定をコマンドで確認、設定変更の紹介。
組織運営時などでも、UAC設定がUIの見た目で把握しづらく、実際には有効になっているケースがある。
この場合に、UACが完全に無効化されていない為に、一部プログラムが実行後に一時停止してしまい表示されないなどのトラブルが起こることがある。その場合のコマンドでのレジストリ設定変更も説明します。

面白いポイント

私が経験上で面白いと感じたことですが、大きな組織ではデバイス管理している側ではUACを無効にして貸与したはずが、運用中に有効化されてしまう場合などがあります。しかし、GUIでは無効になっているかのように見える為、サポートセンターと利用者の間で解決する事が難しいようです。そういった場合には、コマンドで設定を確認してみましょう。UACにかかわるいくつかのレジストリは無効化に準ずる設定がされていても、EnableUAが0x1になっている場合がある為です。

このコマンドによる設定を行っても、意図せずWindows UpdateなどでUAC設定の一部が有効化される事がある。その場合、コマンドプロンプトを開いた時などに管理者権限で開かれないなどの挙動があったり、ディスクのボリューム名などの管理者権限を求められる。その時はこのコマンドを再度実行するか、またはUACの設定画面でUACを無効から一つ上の有効へ変更するのも不具合回避の1つの方法です。

コマンド

コマンドは全て レジストリを直接操作するコマンドです。
OSがクラッシュする設定ではありませんが、慣れていない方は入力など注意をして行いましょう。

確認するコマンド

4つの設定を、それぞれ確認するコマンドです
各設定の説明はコマンドの後を読んでください。

reg query HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v EnableLUA

reg query HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v ConsentPromptBehaviorAdmin

reg query HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v PromptOnSecureDesktop

reg query HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v FilterAdministratorToken

レジストリの設定内容について

※ コマンドで返る値は16進数で表示されます。10進数の0は0x0、1は0x1です。下記の説明は10進数で書いています。regedit.exeのGUIでも10進数で表示されます。

  1. EnableLUA (ユーザーアカウント制御の有効化)
    値: 0または1
    0: ユーザーアカウント制御(UAC)が無効化されています。これは管理者権限を要求するアプリケーションやスクリプトがユーザーの介入なしに実行されることを意味します。セキュリティリスクが高まります。
    1: ユーザーアカウント制御(UAC)が有効です。管理者権限を要求する操作にはユーザーの承認が必要になり、システムの保護が強化されます。
  2. ConsentPromptBehaviorAdmin (管理者のUACプロンプトの挙動)
    値: 0, 2, 5 など
    0: 管理者にプロンプトを表示せずに昇格を許可します。
    2: 管理者が自分のデスクトップ上で確認なしに昇格を許可します。
    5: 管理者はセキュアデスクトップ上で資格情報の入力を要求されます。
  3. PromptOnSecureDesktop (セキュアデスクトップ上でのUACプロンプト)
    値: 0または1
    0: UACのプロンプトが通常のデスクトップ上で表示されます。これはマルウェアによる悪意のある介入が容易になる可能性があります。
    1: UACのプロンプトがセキュアデスクトップ上で表示され、他のアプリケーションから見えなくなります。これにより、セキュリティが向上します。
  4. FilterAdministratorToken (管理者トークンのフィルタリング)
    値: 0または1
    0: 管理者アカウントはUACプロンプトなしで全ての権限を自動的に持ちます。
    1: 管理者アカウントでも特定の操作にはUACプロンプトを通じた承認が必要になります。

現在の設定をエクスポートするコマンド

現在の設定を保存しておきたい場合には、次のようなコマンドで今回変更する設定をエクスポートする事ができます。 Cドライブの直下へ保存しています。このコマンドの実行には管理者権限での実行が必要です。コマンドプロンプトなどを管理者権限で開いてください。regファイル上ではDWORDで表現していますので符号なし32ビット整数型、2進数で値が表示されています。0x1は00000001。

reg export HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System C:\uac_settings.reg

変更するコマンド

このコマンドの実行には管理者権限での実行が必要です。コマンドプロンプトなどを管理者権限で開いてください。設定する値は、前項で説明した設定値を元に任意で設定してください。下記ではEnableLUAを無効化するコマンドを書きます。EnableLUAで設定変更した時、GUI同様にOSの再起動を求める通知が表示されます。

reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v EnableLUA /t REG_DWORD /d 0 /f

参考: Microsoft Learn reg command