[ホーム] - [Windows 11 FAQ 一覧] - [UACを回避する方法まとめ (Powershell , バッチ , タスクスケジューラなど)]



作成日:2023/10/05
更新日:2023/10/05
対象:Windows 11

UACを回避する方法まとめ (Powershell , バッチ , タスクスケジューラなど)




【目次】

UACとは


UAC(User Access Control、ユーザーアカウント制御)は、Windows Vista以降で導入された重要なセキュリティ機能です。重要なシステム変更が行われる際にユーザーの許可を求めるダイアログを表示する機能です。これはユーザが意図せずシステムを破壊することを防止することが目的です。またウィルス、RAT、トロイの木馬などが裏で設定変更するときにユーザに通知することも目的としています。

・ユーザが知らずして重要な変更をしてしまう。(特に初心者)
・悪意のプロセス、ツールなどがシステムをこっそり変更するときに、ユーザに通知する。

例えadministratorsグループでログインしている場合でも表示されます。

UACとは

WindowsにおけるUACの画面



以下の二つの機能があります。

・特権を持つタスクを実行する前に、ユーザーに確認を求める。(レジストリエディタの起動など)
・標準ユーザーとしてのトークンと管理者としてのトークンを区別する。

UACの重要性


UACの重要性は次のとおりです。
(1)悪意のあるソフトウェアの制限
UACは悪意のあるソフトウェア(ウィルス、RAT、トロイの木馬)や外部からの不正なアクセスがシステムレベルの変更を行うことを防ぎます。変更時に画面にUACダイアログが表示されますが、ユーザが拒否すればこの操作はキャンセルされます。もしあなたに覚えがない場合、UACダイアログが表示されたら絶対に変更を拒否してください。これにより、マルウェアやウイルスがシステムに深刻な影響を及ぼすリスクが低減します。

UACで覚えがない場合は拒否する




(2)意図しないシステム変更の禁止
誤ってシステム設定や重要なファイルを変更する可能性を減少させます。あるは初心者がシステム変更ツールを理解せず利用してシステムを破損することを防ぎます。

(3)ユーザーの認識向上
UACのプロンプトは、何らかの変更が行われることをユーザーに警告します。これにより、ユーザーは自分の行動による影響を理解し、再度この操作が本当に必要なのか、バックアップは存在するかなどを再度確認することができます。
そもそもすべてのアプリケーションやタスクは、必要最低限の権限で実行されるべきです。WindowsのUACはこの原則をサポートし、システムのセキュリティを強化しています。

UACを回避する


上記のとおり、UACはとても重要な機能です。
しかしUACは画面が止まるため、バッチ処理、スクリプト処理などには向きません。十分に安全と理解している場合はUACを回避したい場合も多いと思います。

Windows では2023年現在でUACを回避できるのはタスクスケジューラのみです。よってタスクスケジューラで「最上位の特権で実行する」をオンにしてこれをバッチやPowershellから呼ぶこととなります。

(1)タスクスケジューラ
タスクスケジューラで実行すればUACを回避することが可能です。通常の"shell:startup"フォルダではUAC回避はされません。

タスクスケジューラで「最上位の特権で実行する」をチェックします。

「最上位の特権で実行する」をタスクスケジューラで設定




(*)もしコマンドで実行したい場合はショートカットを作成して、実行プログラムの中身で次を指定します。


schtasks /run /tn "(作成したタスク名)"



(2)Powershell
Powershell でUACを回避する方法を紹介します。上記と同じくタスクスケジューラを利用します。

(a)以下バッチ作成
test.bat:

powershell -Command "Start-Process powershell.exe -ArgumentList c:\test\test.ps1 -Verb runas"



(b)タスクスケジューラーに"最上位の特権で実行する"をオンにして上記のbatを起動するタスクを作成する。

(c)上記で作成したタスクを起動するbatファイルを作成

go.bat

schtasks.exe /run /tn test



(d)go.bat を起動

(3)runas /savecred を利用

runas /savecred でプログラムを実行する方法です。
ただしこの方法はセキュリティ上危険なのでテスト環境などに限定してください。

/savecredは実行時にユーザの資格情報(ユーザ名、パスワード)を入力します。そこでビルドイン administratorの資格情報を入れるということです。
セキュリティ上ビルドイン管理者はとても重要なので、十分に注意して設定する必要があります。利用が完了したらコントロールパネルより資格情報を削除してください。


(4)ビルドインアカウントで作業
ビルドインのadministratorで作業した場合はUACは回避されます。ただしデフォルトでビルドインのadministratorは無効化されています。危険なのでこのアカウントは使うべきではありません。次のポリシーで設定変更が可能です。

参考:ユーザー アカウント制御: ビルトイン Administrator アカウントのための管理者承認モード

(5)コマンドプロンプトを管理者権限で開く
そもそもコマンドプロンプトあるいはPowershellを管理者権限で開けば、そこから実行されるプログラムはUACは表示されません。
ただし開く瞬間はUAC確認ダイアログが「ターミナル」として表示されます。

(6)UACを無効化
UACは無効化することは可能です。ただし大変危険なので十分に理解した上で実行してください。

UACの無効化







(ご注意) 本サイト内の内容を使用して発生したいかなる時間的損害、金銭的損害あるいはいかなる損害に対して、いかなる人物も一切の責任を負いません。あくまでも個人の判断で使用してください。 本ページは独自に調査をしたアンオフィシャル(非公式)な内容です。内容に誤りがある可能性や仕様変更により内容が不正確になる可能性があります。 本サイト内掲載されている情報は、著作権法により保護されています。いかなる場合でも権利者の許可なくコピー、配布することはできません。 このページはリンクフリーです。(このページへの直接リンクも可能です。)


Copyright(c) TOOLJP.COM 1999-2022

[Windows 11 FAQ 一覧に戻る]