Windows 10 如何關閉 UAC

甚麼是UAC?

這篇來教一下如何關閉UAC(User Account Control),也就是使用者帳戶控制。簡單白話先說明一下甚麼是UAC,就是當你要以高權限來啟用某些應用軟體或是檔案時,會跳出來詢問你是否確定要執行這個操作的那個很擾人視窗。你可能會很納悶,雖然你已經是用某個較高的權限帳戶登入操作了,為什麼執行這個軟體的時候還會跳出這種UAC詢問視窗?
其實這個功能是Microsoft 在 Windows Vista中所推出的安全技術之一,往後版本的作業系統繼續沿用這項功能。UAC的目的是在於因為由於管理員權限可以達到的事情很多,避免說有一些間諜工具、惡意軟體、後門程式、病毒木馬等等,想要利用管理員權限執行或修改某些程式與設定,偷偷地在背景執行壞壞的事情,這時候當惡意軟體想要用管理員權限執行某些檔案,就會跳出這個UAC視窗來提醒你,並且如果駭客用的時一些腳本執行的話,跳出這個UAC視窗,駭客就沒有辦法用滑鼠去點那個確認的按鈕~
所以還是得先說這個UAC是有達到一定的安全性作用,若要關閉的話.還是先知道一下可能導致的風險比較好。不過就算UAC是開啟的,其實駭客還是有許多手段可以去繞過這個UAC機制(Bypass UAC)。

下圖這個就是UAC使用者帳戶控制示意圖

接著就進入正文提一下關閉UAC的方法,這邊以Win10為例,介紹兩種方法~
不過第一種方法其實不夠徹底,詳細差異可以詳閱下列內容。

方法一:利用GUI圖形化介面關閉

在win10的左下角搜尋地方輸入UAC,點選「變更使用者帳戶控制設定」,點進去後可以看到有分為四個等級,拉到最下面就是關閉UAC了。同理,如果你希望安全性高一點,可以往上拉,預設會是在上面數下來第二個。

方法一:利用GUI圖形化介面關閉

首先我們要先知道UAC的登錄檔路徑

電腦\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System

使用者帳戶控制群組原則和登錄機碼設定

windows按鍵+R,輸入regedit,將上面那串路徑貼上到登錄編輯程式的路徑中,這個路徑下面有三個我們需要注意的名稱(KEY),分別是ConsentPromptBehaviorAdmin、EnableLUA、PromptOnSecureDesktop,如同下面圖片中紅色框框的地方,三個Key所代表的意義如下:

Key-Value:
ConsentPromptBehaviorAdmin:在管理員核准模式,系統管理員之提升權限提示的行為
EnableLUA:所有系統管理員均以管理員核准模式執行
PromptOnSecureDesktop:提示提升權限時切換到安全桌面

ConsentPromptBehaviorAdmin官網說明(英文)
EnableLUA官網說明(中文)
PromptOnSecureDesktop官網說明(英文)

那剛剛第一種方法提到的利用圖形化介面關閉UAC方法,其實所區分的四個等級,也都有相對應的Key-Value,你更改那邊的時候,這邊機碼的值也是會跟著改變的。所以我們當然也是可以到機碼這邊來去直接更改值,去關閉UAC,相對應的Key-Value如下所示:

1. UAC高
ConsentPromptBehaviorAdmin:2
EnableLUA:1
PromptOnSecureDesktop:1
2. UAC中
ConsentPromptBehaviorAdmin:5
EnableLUA:1
PromptOnSecureDesktop:1
3. UAC低
ConsentPromptBehaviorAdmin:5
EnableLUA:1
PromptOnSecureDesktop:0
4. UAC關閉
ConsentPromptBehaviorAdmin:0
EnableLUA:1
PromptOnSecureDesktop:0

那我們剛剛所提到的第一種跟第二種方法的主要差別,就在於UAC關閉的選項,這個稍微特別一點,因為如果從GUI去改,可能會看到這個EnableLUA仍然會是1,要徹底完全關閉的話可以手動去改登錄機碼,把EnableLUA的值改成0。

那我們也可以寫一個bat腳本來關閉UAC,以下為腳本的範例,記得執行的時候必須要右鍵以系統管理員身分執行才可,然後執行完需要重新開機才會生效。

範例一
DisableUAC.bat

reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v "ConsentPromptBehaviorAdmin" /t reg_dword /d 0 /F
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v "EnableLUA" /t reg_dword /d 0 /F
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v "PromptOnSecureDesktop" /t reg_dword /d 0 /F

範例二

GetAdminDisableUAC.bat

::::::::::::::::::::::Get Admin::::::::::::::::::
@echo off
echo Get Administrator Rights
cacls.exe "%SystemDrive%\System Volume Information" >nul 2>nul
if %errorlevel%==0 goto Admin
if exist "%temp%\getadmin.vbs" del /f /q "%temp%\getadmin.vbs"
echo Set RequestUAC = CreateObject^("Shell.Application"^)>"%temp%\getadmin.vbs"
echo RequestUAC.ShellExecute "%~s0","","","runas",1 >>"%temp%\getadmin.vbs"
echo WScript.Quit >>"%temp%\getadmin.vbs"
"%temp%\getadmin.vbs" /f
if exist "%temp%\getadmin.vbs" del /f /q "%temp%\getadmin.vbs"
exit
:Admin
echo Successfully Get Administrator Rights
::::::::::::::::::::::Adjust Registry, Disable UAC::::::::::::::::::
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v "ConsentPromptBehaviorAdmin" /t reg_dword /d 0 /F
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v "EnableLUA" /t reg_dword /d 0 /F
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v "PromptOnSecureDesktop" /t reg_dword /d 0 /F
pause


UAC觸發條件

前面提到想要用管理員權限執行檔案會跳出UAC,這個說法其實是不夠精確的,不過這篇文章畢竟不是專業課程,我也不是Windows大神,下面列出參考維基百科的UAC觸發條件,供有興趣的人參考。

來源:維基百科-使用者帳戶控制

UAC需要授權的動作包括:

  • 以管理員身分執行程式
  • 組態Windows Update
  • 增加或刪除使用者帳戶
  • 改變使用者的帳戶類型
  • 組態來賓(Guest)帳戶(Windows 7和8.1)
  • 改變UAC設定
  • 安裝ActiveX
  • 安裝或移除程式
  • 安裝裝置驅動程式
  • 設定家長監護
  • 修改系統磁碟根目錄、Program Files(x86和x64)目錄或Windows目錄
  • 檢視其他使用者資料夾
  • 設定檔共享或流媒體
  • 組態家長控制台
  • 運行Microsoft Management Console控制台和以.msc為後綴名程式(部份.mmc程式除外)
  • 運行系統還原程式
  • 運行磁盤碎片整理程式
  • 運行註冊表編輯器或修改登錄檔
  • 安裝或解除安裝顯示語言(Windows 7)
  • 運行Windows評估程式
  • 組態Windows電源程式,
  • 組態Windows功能
  • 運行日期和時間控制台
  • 組態輕鬆存取
  • 啟用、修改產品金鑰

基本上,只要有涉及到存取系統磁碟的根目錄(例如C:\),存取Windows目錄,Windows系統目錄,Program Files目錄,存取Windows安全資訊以及讀寫系統登錄資料庫(Registry)的程式存取動作,都會需要通過UAC的認證。

發佈留言