Windows UAC白名單設置

UAC 簡介

使用者帳戶控制(英語:User Account Control,UAC)是 Windows Vista 中新出現的安全技術,通過限制應用軟體而改進 Windows 作業系統的安全性。Windows 7 中保持了這個功能,但是可以允許使用者選擇 UAC 的安全等級。

情況描述

程式因為某些功能(ex.License 需要取得硬體資訊),在執行過程需要系統管理員 administrator 權限執行,但當程式轉手賣給客戶後,客戶公司的 MIS,想用一般使用者的帳號去執行,此時會被要求輸入 administrator 的密碼,這時就會發生希望修改程式權限的要求。基於公司保護 License 的情況下當然不可能修改程式執行權限需求,但又要滿足客戶能夠讓一般 user 使用。

我們已知限制的條件

  1. 程式必須以 administrator 執行 <== 程式設計師要求
  2. 一般使用者要能夠執行 <== MIS 要求
  3. 不可完全關閉系統 UAC <== MIS 要求

看到這些限制答案就已經呼之欲出了,就是將請將程式設置 UAC 白名單,讓一般使用者在不過問前提下(小盾牌)也能夠執行程式。

我們要看到的結果是
“一般使用者帳號 執行有盾牌的程式 將不會過問 UAC,而且程式能夠以 administrator 的權限去執行”

解決方案

一、利用微軟提供的工具

利用微軟提供的應用程式相容性工具 Microsoft Application Compatibility Toolkit

1.首先下載跟安裝

下載:

=== win10 以前(不含win10)) ===
Microsoft Application Compatibility Toolkit 5.6 (ACT)
https://www.microsoft.com/en-us/download/details.aspx?id=7352

=== win10 ===
Windows Assessment and Deployment Kit (ADK)
https://docs.microsoft.com/en-us/windows-hardware/get-started/adk-install
其實裡面包含ACT 只要選擇ACT安裝即可,中文是應用程式程式相容性工具,如下圖所示

1 2.安裝完後開啟 “ Compatibility Administrator (64-bit) “ (如果是 32-bit 的程式請進入 32-bit)

windows7 的預設路徑:

C:\Program Files (x86)\Microsoft Application Compatibility Toolkit\Compatibility Administrator (64-bit)\Compatadmin.exe
C:\Program Files (x86)\Microsoft Application Compatibility Toolkit\Compatibility Administrator (32-bit)\Compatadmin.exe

windows10 的預設路徑:

C:\Program Files (x86)\Windows Kits\8.1\ADK\Microsoft Application Compatibility Toolkit\Compatibility Administrator (64-bit)\Compatadmin.exe
C:\Program Files (x86)\Windows Kits\8.1\ADK\Microsoft Application Compatibility Toolkit\Compatibility Administrator (32-bit)\Compatadmin.exe

3.先對 “ New Database(1) [Untitled_1] “ 按一下,接著點選 Fix,如下圖

2

4.接著會進入一個視窗, “ Name of the program to be fixed “ 那行是輸入想設為白名單的程式名稱(其實隨便打也沒差), “ Name of the vendor for this program “ 可以不用理他, “ Program file location “ 這行就是你想設為白名單程式的路徑,點選旁邊 “ Browse… “ 即可設定,好了之後按下一步,下圖為範例

3

5.尋找 “ RunAsAdmin “ 、 “ RunAsHighest “ 、 “ RunAsInvoker “ 並打勾,好了之後按下一步,如下圖紅框

6.不用進行設定,直接下一步,如圖

4

7.一樣不用改,直接按完成

5

8.對 “ New Database(1) [Untitled_1] “ 按下 Ctrl + R,改一個新的名子,改完之後按下 Save

6

9.對 “ XXX [Untitled_1] “ (XXX = 你改的名子)按右鍵,點選 “ Install “

7

10.如果出現 “ The database ‘XXX’ was successfully installed “ 就是成功了

8
以上圖片跟文字說明大部分取至巴哈網友 GaGLA21726

來源: https://home.gamer.com.tw/creationDetail.php?sn=2145134


二、修改註冊碼 regedit

1.使用系統管理員->開始->執行-> 輸入 regedit

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

PS:
這邊注意的一點,部分網站都是教說寫在HKEY_CURRENT_USER,但是本案例使用的是HKEY_LOCAL_MACHINE
因為HKEY_CURRENT_USER 在不同的使用者帳號下所看到的註冊碼是不同的,
有點類似 HKEY_CURRENT_USER 是屬於Local的變數--->ex.某使用者的文件
HKEY_LOCAL_MACHINE則是Global 變數的感覺--->ex.公用文件
所以根據需求來決定要寫在HKEY_LOCAL_MACHINE 或是 HKEY_CURRENT_USER

2.如果沒看到 Layers 請自行新增

  • 在 AppCompatFlag 按右鍵->新增->機碼 名稱改為 Layers

3.選擇 Layers 按右鍵->新增->字串值

數值名稱:

  • 執行程式路徑

數值資料:

  • ~ RUNASADMIN RUNASINVOKER

Note:

  • ~ 表示有多參數的意思
  • RUNASADMIN 以系統管理員權限執行
  • RUNASINVOKER 不彈出UAC警告視窗

  目錄