Windows 與 UAC

微軟為了解決長久以來困擾 用戶的保安問題,在 Vista 裏加入了所謂的 UAC – User Account Control。簡單來說,程式如果要用到系統管理員才能用到的 API,例如更改系統設定,安裝程式,系統維護,設定防火牆等等,都必須經過 UAC 向使用者取得確認,那就是在螢幕上顯示詢問,「你要讓這程式更改系統設定嗎?拒絕還是接受」使用者要按「接受」才能讓程式繼續執行。

但是,由於牽涉過多 API,程式的流程裏就可能要用上十多次 UAC,反而麻煩了使用者。隔壁的蘋果也不忘在廣告挖苦對方一番,在廣告中 PC 連跟 Mac 說句話也得要身旁的保鏢批准。雖然現實沒麻煩到這個程度,但也夠擾人了。雖然微軟在 SP1 及後來推出的 Windows 7 大量減少詢問出現的次數,不過有時會因 API 的問題令某些程式不能執行。

其實,root cause 不是微軟 NT 架構不夠安全,而是其使用者和程式開發人員的不配合。Windows 曾經有兩大品種,其一是繼承 Windows 3.1 血統的 9x 系列,另一邊則是來自 Windows NT 4 的 NT 核心。9x 系列至末代 Me 都沒有多用戶的概念,作業系統僅設計讓同一人執行,程式亦 assume 執行者擁有更改電腦任何設定的權利。所以當微軟準備將兩系整合成家用商用皆宜的 XP,便曾考慮過將預設帳戶預訂為沒管理員權限的普通使用者。奈何很多來自 9x 系統那邊的程式都因為 API 大受限制停止運作,所以方案就此作罷。

在平衡兼容性和保安問題兩大因素,才出現了 UAC 這四不像。對比 *NIX 的 sudo,UAC 是跟軟件兼容妥協下的產物。UAC 除了影響正常操作外,也對保安沒甚麼助益。用戶遇著上千百萬個詢問視窗,難免養成一種不管內容是甚麼都按 “Yes”,”Allow” 的反射行為,不論是菜鳥還是資深用家也是如此。有些用戶嫌麻煩更索性關掉。即使 Vista SP1/Win7 已大大減少這類視窗出現次數,但這亦無補於事。

要改變這個死局,微軟不是跑去改善 UAC 的 User Experience,而是應該協助使用者洗脫惡習,戒除凡事每每用 admin 權限的習慣。既然也著手增強保安加入了 UAC 這擾人之物,何不徹底改革,將 admin right 改成如非必要不能動的帳戶?

我媽的電腦便是如此。她也是染上了「按 Yes/Allow/Next 準沒錯」的普通用戶,也許由於這樣她以前的電腦積滿了不少不明來歷的怪軟件。為她安裝新電腦我便做了個小實驗,將她要用的軟件裝好,再將她的帳戶降格為普通用戶。這樣我至少不用再為奇怪的軟件煩惱,她要安裝真的有用的軟件,也只要我幫她 Run as Admin – 也就是 Windows 的 sudo,就能解決。

顯然把 OS X/Linux 的一套學習過來套用明明就沒問題,但箇中有甚麼原因令視窗出現了 UAC,則不得而知。

2 thoughts on “Windows 與 UAC

Leave a Reply

Your email address will not be published. Required fields are marked *