UAC / EnableLUAの値を確認・変更し、結果をログに残す
はじめに
Windows環境で作業していると、UACに関連する設定を確認したい場面があります。
たとえば、
- 管理者権限で実行しているはずなのに想定どおり動かない
- 特定の操作で権限昇格の挙動が気になる
- UAC関連の設定値を確認したい
- レジストリ変更前後の状態をログに残したい
- Cドライブ直下に書き込みをしたい
といったケースです。
この記事では、UACに関係する EnableLUA の値を確認し、必要に応じて変更し、その結果をログに残すbatの例を紹介します。
ただし、EnableLUA の変更はWindowsのセキュリティ動作に影響します。
この記事は変更を推奨するものではなく、確認方法と作業証跡の残し方を整理する目的です。
EnableLUAとは
EnableLUA は、以下のレジストリにある値です。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System
値名は以下です。
EnableLUA
UACに関係する設定であり、値を変更すると、管理者権限の扱いやUACの動作に影響します。
そのため、安易に変更するものではありません。
想定する用途
このbatは、以下のような場面を想定しています。
-
EnableLUAの現在値を確認したい - レジストリ変更前後の状態をログに残したい
- 作業証跡として、実行日時と変更結果を保存したい
- 検証環境でUAC関連設定の挙動を確認したい
本番環境で実行する場合は、必ず事前に影響範囲を確認してください。
やりたいこと
今回やりたいことは以下です。
- 実行日時をログに残す
-
EnableLUAの変更前の値を確認する -
EnableLUAの値を変更する - 変更後の値を確認する
- 結果をデスクトップ上のテキストファイルに保存する
現在値を確認する
EnableLUA の現在値は、以下のコマンドで確認できます。
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v EnableLUA
値を変更する
値を変更する場合は、以下のようにします。
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v EnableLUA /t REG_DWORD /d 0 /f
この例では、EnableLUA を 0 に変更しています。
ただし、これはUACの動作に影響するため、実行には注意が必要です。
batサンプル
以下は、変更前後の EnableLUA の値をログに残すbatのサンプルです。
@echo off
rem ==========================================
rem EnableLUA 確認・変更ログ出力bat
rem ==========================================
set REGPATH=HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System
set REGVALUE=EnableLUA
set LOGFILE=%USERPROFILE%\Desktop\RegAddEnableLUA_%COMPUTERNAME%.txt
echo ########### start ########### > "%LOGFILE%"
echo date %date% >> "%LOGFILE%"
echo time %time% >> "%LOGFILE%"
echo host %COMPUTERNAME% >> "%LOGFILE%"
echo. >> "%LOGFILE%"
echo ########### before EnableLUA ########### >> "%LOGFILE%"
reg query "%REGPATH%" /v %REGVALUE% >> "%LOGFILE%" 2>&1
echo. >> "%LOGFILE%"
echo ########### change EnableLUA ########### >> "%LOGFILE%"
echo reg add "%REGPATH%" /v %REGVALUE% /t REG_DWORD /d 0 /f >> "%LOGFILE%"
reg add "%REGPATH%" /v %REGVALUE% /t REG_DWORD /d 0 /f >> "%LOGFILE%" 2>&1
echo. >> "%LOGFILE%"
echo ########### after EnableLUA ########### >> "%LOGFILE%"
reg query "%REGPATH%" /v %REGVALUE% >> "%LOGFILE%" 2>&1
echo. >> "%LOGFILE%"
echo ########### end ########### >> "%LOGFILE%"
start notepad "%LOGFILE%"
変更せず確認だけしたい場合
確認だけしたい場合は、reg add の部分を入れずに、reg query だけ実行します。
@echo off
set REGPATH=HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System
set REGVALUE=EnableLUA
set LOGFILE=%USERPROFILE%\Desktop\CheckEnableLUA_%COMPUTERNAME%.txt
echo date %date% > "%LOGFILE%"
echo time %time% >> "%LOGFILE%"
echo host %COMPUTERNAME% >> "%LOGFILE%"
echo. >> "%LOGFILE%"
echo ########### EnableLUA ########### >> "%LOGFILE%"
reg query "%REGPATH%" /v %REGVALUE% >> "%LOGFILE%" 2>&1
start notepad "%LOGFILE%"
まずは確認だけ行い、変更が必要かどうかを判断する方が安全です。
1に戻す場合
EnableLUA を 1 に戻す場合は、以下のようにします。
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v EnableLUA /t REG_DWORD /d 1 /f
ただし、設定変更後は再起動が必要になる場合があります。
作業前に、再起動可否や影響範囲を確認してください。
各処理の説明
実行日時を残す
echo date %date% >> "%LOGFILE%"
echo time %time% >> "%LOGFILE%"
いつ実行したかをログに残します。
レジストリ変更のような設定変更作業では、日時の記録が重要です。
変更前の値を確認する
reg query "%REGPATH%" /v %REGVALUE% >> "%LOGFILE%" 2>&1
変更前の値をログに出力します。
変更前の状態が残っていないと、後から戻したいときに困ることがあります。
実行した変更コマンドをログに残す
echo reg add "%REGPATH%" /v %REGVALUE% /t REG_DWORD /d 0 /f >> "%LOGFILE%"
実際にどのコマンドを実行したかをログに残しています。
結果だけでなく、実行した操作そのものを残しておくと、後から確認しやすくなります。
変更後の値を確認する
reg query "%REGPATH%" /v %REGVALUE% >> "%LOGFILE%" 2>&1
変更後に再度確認します。
設定変更では、
- 変更前
- 変更コマンド
- 変更後
を残すと、作業証跡として扱いやすくなります。
このbatでできること
このbatでは、以下のことができます。
-
EnableLUAの現在値を確認する -
EnableLUAの値を変更する - 変更前後の値をログに残す
- 実行日時と端末名を残す
- 実行した変更コマンドを残す
- 作業後にログを開く
注意点
本番環境では安易に変更しない
EnableLUA の変更は、UACや管理者権限の動作に影響します。
本番環境で安易に変更すると、セキュリティポリシーやアプリケーションの動作に影響する可能性があります。
まずは確認だけ行い、変更が必要かどうかを慎重に判断してください。
管理者権限が必要
HKLM配下のレジストリを変更するため、管理者権限が必要です。
batは「管理者として実行」してください。
再起動が必要になる場合がある
EnableLUA の変更は、即時反映されない場合があります。
変更後に再起動が必要になることがあるため、作業前に再起動できるタイミングか確認してください。
変更前の値を必ず残す
変更前の値を残しておかないと、元に戻すときに困ることがあります。
このbatでは、変更前後の reg query 結果を同じログに残しています。
セキュリティポリシーやGPOを確認する
環境によっては、UAC関連設定がグループポリシーで管理されている場合があります。
手動で変更しても、後からGPOで戻されることがあります。
変更前に、組織のセキュリティポリシーやGPO設定を確認してください。
外部共有時は情報をマスキングする
ログには端末名やレジストリ設定値が含まれます。
外部へ共有する場合は、必要に応じてマスキングしてください。
まとめ
reg query と reg add を使うことで、EnableLUA の値を確認・変更できます。
ただし、EnableLUA はUACに関係する設定であり、変更には注意が必要です。
大事なのは、
とりあえず変更する
ではなく、
変更前の状態、実行した操作、変更後の状態を残す
ことだと思います。
特にセキュリティ設定に関わる変更では、作業証跡を残し、必要に応じて戻せるようにしておくことが重要です。