關掉記憶體完整性(HVCI)會變快嗎 ── 意義、步驟與判斷

· 更新日期: · · Windows 11, 記憶體完整性, HVCI, 核心隔離, VBS, 效能, 資安

就算聽說「關掉記憶體完整性電腦會變快」,一看到 Windows 安全性跳出警告,又會猶豫該不該改。本文把 「有沒有可能變快」與「自己的電腦能不能關」分開來考慮。

對象是 Windows 安全性「裝置安全性」>「核心隔離」裡的「記憶體完整性」切換開關。記憶體完整性是保護 Windows 核心不受經由驅動程式的攻擊的功能,並不是單純用來降低效能的設定。另一方面,Microsoft 自己也說明過,在遊戲裝置的部分情境與部分組態中它可能影響效能。1

本文先給出結論與依目的的讀法,之後再說明運作方式、效能的比較方法、判斷標準、更改前後的確認,以及關閉的步驟與復原方法。想更深入追究運作方式的讀者,請參閱連載文章「Windows 虛擬化的深層(第 2 回)── 連核心都看不到的記憶體:VBS、HVCI 與 Credential Guard 如何運作」。本文相當於它的入口。

本文的前提

項目 內容
目標讀者 聽說「關掉記憶體完整性會變快」,想知道是不是真的、自己該怎麼做的電腦使用者、玩家,以及小規模內部電腦的管理者
前提知識 能操作 Windows 的設定畫面。不需要嚴格理解驅動程式或核心這些詞
前提環境 Windows 11。操作步驟以 Windows 11 的 Windows 安全性應用程式為前提。更改設定需要系統管理員權限
難度 初級
不涵蓋的內容 VTL、Secure Kernel、SLAT 的內部結構(請看第 2 回的文章)、Credential Guard、企業用的 App Control 原則設計

1. 先講結論

確實有關掉之後會變快的組態。但並不是所有電腦都會變快,也不是只憑效能差就該關。

記憶體完整性(HVCI) 在 Hypervisor 建立的隔離環境中,對載入核心(作業系統核心)的驅動程式做簽章驗證。只讓通過驗證的記憶體分頁可執行,而且不允許對可執行的分頁寫入,藉此讓透過驅動程式挾持電腦變得更難。23

判斷的軸是「這台電腦用來做什麼」。如果測了有差、這個差對你的用法有影響、你不玩那些在錯誤中點名 HVCI 的反作弊遊戲,而且這台電腦不處理公司資產或重要資訊,那麼關掉才進入選項。除此之外,維持開啟並去找別的原因更符合實務。

結論與前往對應章節的指引

想知道的事 先要掌握的答案 詳細閱讀
關掉會變快嗎 在舊 CPU 等情況下可能出現差異,但取決於組態。Microsoft 承認的效能影響也只限於部分情境與組態1 第 4 章: 條件與測法
什麼情況下不會變 瓶頸在 GPU、原因是記憶體不足・磁碟・發熱・電源模式、記憶體完整性本來就沒在執行,這些情況 4.2: 依情況看預期
我可以關嗎 用於業務或處理重要資訊的電腦要維持開啟。就算是專用機測出了差異,也要看失去的保護與對遊戲的影響再判斷 第 5 章: 依用途判斷
怎麼試 確認目前的執行狀態並測量,改設定後重新啟動。確認狀態變化之後,再以相同條件測一次。不能只看切換開關的顯示4 第 6 章: 確認方法第 7 章: 操作步驟
開不回去時 找出不相容的驅動程式並更新到對應版本。不強制開啟 第 8 章: 復原時的處理

就算只想先看操作,也請先掌握第 5 章的判斷標準與第 6 章的確認方法,再進入第 7 章。 關閉的操作雖短,但重新啟動與確認是一整套。如果是灰色無法操作,請不要自行繞過系統管理員的設定或 UEFI 鎖。

圖中實線表示始終成立的關係,虛線表示附帶條件的關係(成立條件寫在詳細頁面中各關係的說明中)。關係的完整清單(共 28 條,附依據與可信度)以及主要概念的定義,彙整在知識地圖詳細頁面(日文)。資料:JSON-LD / Turtle

2. 先分清容易混淆的 4 個詞

一開始先把設定畫面的名字和背後運作的機制的名字分開。這次要關的對象是「記憶體完整性」,不是下面這些全部。

名稱 在本文中的位置
記憶體完整性(HVCI) 要考慮是否關掉的功能
核心隔離 有記憶體完整性切換開關的那個畫面
虛擬化型安全性(VBS) 支撐記憶體完整性運作的基礎
虛擬機器平台(VMP) 使用同一個 Hypervisor、與記憶體完整性不同的另一個功能

2.1 記憶體完整性(HVCI)

這是 Windows 安全性「核心隔離」畫面上切換開關的名字。正式名稱是「Hypervisor 保護的程式碼完整性(Hypervisor-protected Code Integrity, HVCI)」,在 Microsoft 的文件中「記憶體完整性」與「HVCI」被當成同一個東西。2 本文說的「關掉」,指的就是它。

2.2 核心隔離

這是 Windows 安全性畫面的名字。它把「透過在記憶體中隔離 Windows 的核心處理程序來防禦惡意軟體」的一組安全性功能彙整在一個畫面裡,記憶體完整性只是其中的 1 個切換開關。3

畫面上有時還會並列核心模式的硬體強制堆疊保護等項目。雖然常見「關掉核心隔離」這種說法,但整個畫面並沒有一個開關,實際關掉的是記憶體完整性那個切換開關。

2.3 虛擬化型安全性(VBS)

這是支撐記憶體完整性的機制。它用 Windows 的 Hypervisor 建立一個就算作業系統核心被挾持也依然受保護的隔離環境,並把安全性功能收納其中。5

記憶體完整性是承載在 VBS 之上的功能之一,Credential Guard(網域認證資料的保護)等也在這上面。關掉記憶體完整性,未必代表 VBS 本身也停下來(第 6 章)。

2.4 虛擬機器平台(VMP)與 Hyper-V

這是「開啟或關閉 Windows 功能」中的一項,是執行 WSL 2 這類輕量虛擬機器的基礎。6 在 Microsoft 關於遊戲效能的說明中,它與記憶體完整性並列,也被列為效能影響的因素。1 它是與記憶體完整性不同的另一個開關、另一個功能。

另外,Windows 沙箱不是靠 VMP 而是靠「Windows 沙箱」這個專用的選用功能啟用的,它不依賴 VMP,但同樣跑在同一個 Windows Hypervisor 之上。7

四個詞之間的關係Windows Hypervisor 之上承載虛擬化型安全性(VBS)與虛擬機器平台,VBS 之上承載記憶體完整性與 Credential Guard,Windows 安全性的核心隔離畫面顯示記憶體完整性的切換開關,呈現這樣的包含關係映出設定Windows Hypervisor虛擬化型安全性(VBS)虛擬機器平台記憶體完整性(HVCI)Credential Guard 等核心隔離畫面(顯示切換開關)

圖 1:「核心隔離」是畫面的名字,「記憶體完整性」是其中的切換開關,VBS 是它的基礎,VMP 是承載在同一個 Hypervisor 上的另一個功能。

也就是說,被稱為「關掉會變快」的東西,其真身是承載在 Hypervisor 之上的 2 個功能(記憶體完整性與 VMP),而設定畫面的切換開關只切掉其中前者。

3. 記憶體完整性到底在做什麼

本章依保護什麼 → 為什麼影響效能 → 我的電腦上一開始就啟用了嗎的順序整理。想先知道效能差異預期的讀者,可以從第 4 章的表開始讀。

3.1 把驅動程式的檢查哨挪到核心之外

Windows 本來就有檢查載入核心的驅動程式是否正確簽章的機制(程式碼完整性)。問題在於,做這項檢查的程式碼也在核心裡。挾持了核心的攻擊者可以把檢查本身掉包。

記憶體完整性把這項檢查放到 VBS 的隔離環境中執行。2 隔離環境由 Hypervisor 守護,所以就算挾持了核心也伸不到檢查那裡。此外,它還對核心的記憶體施加下面 2 條規則。2

  • 核心的記憶體分頁只有在通過驗證之後才變得可執行
  • 可執行的分頁不會變成可寫
記憶體完整性啟用時的驅動程式載入驅動程式的載入要求在 VBS 的隔離環境中接受簽章驗證,通過則以可執行且不可寫的分頁被允許,未通過則載入被封鎖並記錄到 CodeIntegrity 操作記錄檔通過未通過驅動程式的載入要求在隔離環境中驗證簽章以可執行・不可寫允許封鎖載入記錄到 CodeIntegrity 記錄檔(3087)

圖 2: 檢查哨在核心之外,所以就算挾持了核心也換不掉檢查哨。

有了這條規則,就算利用弱點改寫了核心的記憶體,也無法把改寫的內容付諸執行。因為能寫的分頁不能執行,能執行的分頁不能寫。2 Windows 安全性說明文裡的「讓惡意程式更難利用低階驅動程式挾持電腦」3,說的就是這件事。

3.2 為什麼會影響效能

保護用的處理是有負擔的。這裡把使用 Hypervisor 帶來的負擔記憶體完整性管理執行權限帶來的負擔分開來看。

負擔 1: Hypervisor 跑在 Windows 之下

VBS 以 Hypervisor 為前提,而 Hypervisor 必須要有 SLAT(二階位址轉譯)這個 CPU 功能。5 主機的 Windows 自身作為 Hypervisor 之上的分割區執行,因此記憶體位址的轉譯變成兩階段,多出那部分負擔。這個結構在「你的 Windows 其實跑在哪裡」中有詳細說明。

負擔 2: 管理核心的記憶體能否執行

記憶體完整性把「只有通過驗證的分頁才可執行」這條規則,交給 Hypervisor 的記憶體保護來強制,而不是交給核心自己。在這個處理上,CPU 的世代差就發揮作用了。

Microsoft 的文件說明,記憶體完整性在具備 Intel Kaby Lake(第 7 代)以後的 Mode-Based Execution Control(MBEC)AMD Zen 2 以後的 Guest Mode Execute Trap(GMET) 的處理器上運作得更好。比它們更舊的處理器要依賴 稱為 Restricted User Mode 的模擬,因此對效能的影響更大。8

MBEC 是把記憶體的執行權限分成「可否在使用者模式下執行」與「可否在核心模式下執行」,讓硬體能區分的功能。9 記憶體完整性只想約束核心模式的執行,所以只要有這個區分就可以交給 CPU。沒有的話,就由 Hypervisor 用軟體來代勞。

產生效能負擔的兩個位置記憶體完整性的效能負擔產生在兩處:Hypervisor 墊在下面帶來的兩階段位址轉譯,以及在 Hypervisor 這側強制核心分頁的執行權限;後者的大小取決於有沒有 MBEC/GMET沒有記憶體完整性已啟用Hypervisor 墊在作業系統之下由 Hypervisor 強制執行權限位址轉譯變成兩階段CPU 有 MBEC / GMET 嗎?由硬體處理(影響較小)模擬(影響較大)

圖 3:「關掉會變快」的幅度,主要由右側的分支決定。

自己的 CPU 有沒有 MBEC/GMET,可以看第 6 章介紹的 Win32_DeviceGuardAvailableSecurityProperties 中是否包含 7。8

3.3 我的電腦上到底有沒有在執行

在進入效能比較之前,還需要確認一件事。並不是只要是 Windows 11,記憶體完整性就一定在執行。

記憶體完整性是把 Windows 11 全新安裝到受支援硬體上時預設啟用的功能,從 Windows 10 升級則不會自動啟用。4 自動啟用的條件如下。4

項目 自動啟用的條件
處理器 Intel 第 8 代以後(Windows 11 22H2 以後。21H2 是第 11 代以後)、AMD Zen 2 以後、Qualcomm Snapdragon 8180 以後
記憶體 8GB 以上(x64 的情況)
儲存裝置 64GB 以上的 SSD
驅動程式 只裝有支援記憶體完整性的驅動程式
韌體 UEFI/BIOS 中已啟用虛擬化輔助功能

也就是說,從 Windows 10 升級後就這麼用著的電腦、不符合條件的電腦、哪怕只有一個不相容驅動程式的電腦,都可能本來就是關著的。在那種狀態下覺得「關掉之後變快了」,那是別的因素造成的。請先用第 6 章的方法確認目前的狀態。

記憶體完整性預設啟用的條件在 Windows 11 的全新安裝中,同時符合 CPU 世代・8GB 以上記憶體・64GB 以上 SSD・受支援的驅動程式・韌體已啟用虛擬化這些條件才會預設啟用;升級安裝或條件不足則不會啟用升級符合不符合安裝 Windows 11是全新安裝嗎?不會自動啟用CPU・記憶體・SSD・驅動程式的條件預設啟用不會啟用(可手動開)

圖 4:「我的電腦本來就是關著的」並不少見。試之前先看目前狀態。

4. 真的會變快嗎 ── 判斷的材料

本章的重點是,有可能影響效能,但無法一概而論會快多少百分比。官方的說明、依組態的預期、在自己電腦上的實測,要分開來讀。

4.1 Microsoft 說了什麼

Microsoft 的支援文章「Options to optimize gaming performance in Windows 11」提到,Windows 11 為了記憶體完整性(HVCI)與虛擬機器平台(VMP)而使用虛擬化,並且在遊戲裝置的部分情境與部分組態中,記憶體完整性與 VMP 處於開啟狀態可能帶來效能影響,同時給出了分別關閉它們的步驟。1

也就是說「有可能變快」是 Microsoft 官方的看法。但它帶著「在部分情境與部分組態中」這個限定,並沒有給出會快多少的數字。

4.2 容易出現差異的條件與不容易出現的條件

把 3.2 的運作方式能推出的結論依情況整理如下。這裡寫的「預期」是從運作方式出發的傾向,不是 Microsoft 公布的實測值。 自己的電腦如何,請用 4.3 的方法實測。

情況 關掉後變快的預期 理由
沒有 MBEC/GMET 的舊 CPU(Intel 第 7 代之前、AMD Zen 2 之前) 容易出現差異 執行權限的強制由模擬來代勞8
瓶頸在 CPU、追求高 fps 的遊戲 有時會出現差異 Microsoft 承認有效能影響的領域1
瓶頸在 GPU 的遊戲(高解析度・高畫質設定) 很小 就算減輕 CPU 這側的負擔,GPU 的等待時間也不會變
瀏覽器、Office、看影片 基本感覺不到 這些不是頻繁變更核心執行權限的處理
使用 Hyper-V・WSL 2・Windows 沙箱・Docker 的電腦 關掉後基礎仍在 Hypervisor 本身會為了這些繼續執行(6.2)
變慢的原因是記憶體不足・磁碟・發熱・電源模式 不會變 與記憶體完整性無關的另一個原因
本來記憶體完整性就沒在執行的電腦 不會變 沒有可關的東西(3.3)
關掉會不會變快的判斷流程先確認記憶體完整性目前是否在執行,沒在執行就去找別的原因;在執行則依 CPU 有沒有 MBEC/GMET 以及瓶頸是不是 CPU 來區分預期,最後以相同條件實測再判斷沒有否(GPU 等)體感很慢記憶體完整性在執行嗎?去找別的原因CPU 有 MBEC / GMET 嗎?容易出現差異瓶頸是 CPU 嗎?有時會出現差異預計差異很小以相同條件實測再判斷

圖 5:「會不會變快」由電腦的組態決定。最後發揮作用的不是運作方式的知識,而是在自己電腦上的實測。

4.3 不要憑體感,要實測

只憑「關掉之後覺得變快了」,無法判斷設定的效果。因為為了改設定已經重新啟動過,光是重新啟動就會讓電腦暫時輕快一些。

在真正改設定之前,請先依第 5 章確認這台電腦是不是可以關的。 在此之上做比較時,請掌握下面的注意點。測量的順序如圖 6 所示,是「確認開啟並測量 → 關掉並重新啟動 → 確認關閉並以相同條件測量」。確認方法在第 6 章,更改設定的方法在第 7 章。

測量時要掌握的狀態與條件

  • 確認狀態真的變了。 關掉並重新啟動之後,用第 6 章的方法確認「執行中的服務」裡已經沒有記憶體完整性。不做這一步就測,可能是在拿開啟和開啟做比較。
  • 統一條件。 是接電源還是用電池、電源模式、背景在跑的東西,遊戲則是同一場景・同一畫質設定。比較條件的統一方法整理在「在 Windows 上正確比較程式各版本速度的方法」中。

多測幾次,看差異是否對用法有影響

使用遊戲內建的效能測試,或某個固定處理所花的時間等能出數字的東西。開啟與關閉各測 3 次左右,比較中位數。

要看的不只是數字有沒有變大。平均 fps 提高 2%,在畫面上是分辨不出來的。最低 fps(卡頓)有沒有改善,對體感的影響更大。要確認這個差異是不是「對用法有影響」的量級。

開啟・關閉的比較步驟確認目前狀態並固定條件,做多次相同的測量,改設定後重新啟動,確認狀態已變再重複相同的測量,最後依差異的大小是否對用法有影響來判斷確認目前狀態(第 6 章)固定條件測 3 次改設定後重新啟動確認狀態已改變以相同條件測 3 次差異大到對用法有影響嗎?進入第 5 章的判斷開回去並找別的原因

圖 6: 不要把重新啟動之後的輕快與設定的效果混為一談。狀態的確認是測量的前提。

如果沒有差異,就去找別的原因

沒有差異,代表變慢的原因在別處。整台電腦都很重時的排查方法請看「WPR/WPA 實務 ── 從系統整體調查「整台 PC 變慢」」,懷疑是工作管理員的效率模式所致時請看「Windows 的效率模式是什麼 - Windows 11 的綠色葉子圖示代表什麼,以及如何關閉」。

5. 到底能不能關 ── 會失去什麼

「會變快」與「可以關」是兩個不同的判斷。 就算測出了差異,那本身也不構成關掉的理由。要把失去的保護與這台電腦的用途對照著看。

5.1 會失去的東西

要注意的是三點:保護變弱、會出警告、有些軟體用不了。

針對核心程式碼注入的防線被撤掉

透過有弱點的驅動程式或未簽章的驅動程式挾持核心的攻擊,記憶體完整性會讓它變得更難。2 關掉之後,面對這類攻擊就回到以往的 Windows 了。

Windows 安全性會出警告

從 Windows 11 22H2 開始,記憶體完整性關閉時 Windows 安全性會顯示警告,工作列的圖示與通知中心也會帶上警告標記。警告可以在 Windows 安全性的畫面上關掉。8

要求 HVCI 的遊戲可能無法啟動

一部分反作弊(如 Riot Games 的 Vanguard)在 Windows 11 上把 HVCI(記憶體完整性)用於系統完整性的驗證。

Riot 的支援文章說明,要分別啟用 VAN: RESTRICTION 錯誤中列出的安全性功能(TPM 2.0、安全開機、記憶體完整性、IOMMU 其中之一)。在錯誤中點名了 HVCI 的電腦上,不開啟它遊戲就無法啟動。10

這並不是對所有電腦一律施加的條件,但可能出現「為了想加速的遊戲關掉,結果另一款遊戲啟動不了」的情況。

關掉記憶體完整性會失去什麼關掉記憶體完整性後,針對核心程式碼注入的防線被撤掉,Windows 11 22H2 以後 Windows 安全性會持續出警告,而在錯誤中點名 HVCI 的反作弊遊戲將無法啟動關掉記憶體完整性針對核心程式碼注入的防線被撤掉Windows 安全性出警告點名 HVCI 的遊戲跑不起來

圖 7: 會失去的有 3 樣。與速度的差異是否相稱,要看過這 3 樣再決定。

5.2 判斷的參考

這台電腦是 參考
公司的電腦、連上內部網路的電腦、處理業務資料的電腦 維持開啟。如果慢到想關掉,就另找原因(4.3)
家用電腦,也用來上網・收發郵件・網路銀行 維持開啟。得到的差異不值得
接近遊戲專用的電腦,測出了差異,而且不玩點名 HVCI 的反作弊遊戲 關掉是選項。但要記住自己關了它,用途變了就改回去
舊 CPU(沒有 MBEC/GMET),遊戲或重負載處理的體感明顯不好 測出差異的話關掉是選項。但正道還是更新電腦
開發機・驗證機,會用 Hyper-V 或 WSL 2 關掉後基礎仍在,很難出現期待的差異(6.2)
能不能關的判斷涉及業務資料或內部網路的電腦維持開啟;要玩在錯誤中點名 HVCI 的反作弊遊戲也維持開啟;只有測出差異的專用機才是關掉的候選,其餘維持開啟並去找別的原因涉及業務資料・內部網路嗎?維持開啟(去找別的原因)要玩點名 HVCI 的遊戲嗎?維持開啟測出差異了嗎?關掉是選項(用途變了就改回去)維持開啟

圖 8: 能成為關掉候選的,只有走到最後一個分支的電腦。

6. 確認它是否已經關掉

從這裡開始是操作的準備。先掌握確認方法,在更改前後使用同一種方法。 關鍵是不要只看了切換開關就斷定「原來是開著的」「已經關掉了」。

6.1 切換開關的顯示是「設定」,不是「執行狀態」

Windows 安全性「核心隔離」畫面的切換開關顯示的是設定的值。剛啟用完等待重新啟動期間,或者開機時因相容性問題記憶體完整性沒能啟動期間,切換開關看起來也可能是開著的。執行狀態要用下面兩種方法之一確認。4

用畫面確認: msinfo32(系統資訊)

  1. Win + R 執行 msinfo32
  2. 看「系統摘要」下方的「虛擬化型安全性」欄位。
  3. 如果「執行中的服務」裡包含「Hypervisor 強制的程式碼完整性」,表示記憶體完整性正在執行。8

用數值確認: PowerShell

在以系統管理員身分開啟的 PowerShell 中執行下面這些。8

Get-CimInstance -Namespace root/Microsoft/Windows/DeviceGuard `
    -ClassName Win32_DeviceGuard |
    Select-Object VirtualizationBasedSecurityStatus,
                  SecurityServicesConfigured,
                  SecurityServicesRunning,
                  AvailableSecurityProperties

讀法如下。8

屬性 意義
VirtualizationBasedSecurityStatus 0 / 1 / 2 VBS 已停用 / 已啟用但未執行 / 已啟用且正在執行
SecurityServicesConfigured 包含 2 記憶體完整性在設定上已啟用
SecurityServicesRunning 包含 2 記憶體完整性實際上正在執行
AvailableSecurityProperties 包含 7 CPU 具備 MBEC/GMET(3.2)

關掉並重新啟動之後,只要 SecurityServicesRunning 裡沒有 2 就算成功。 如果 SecurityServicesConfigured 裡也沒有 2,表示在設定上也已經關掉。VBS 整體的狀態與記憶體完整性的執行狀態要分開讀。

記憶體完整性執行確認的流程查詢 Win32_DeviceGuard,SecurityServicesRunning 包含 2 則記憶體完整性正在執行,不包含則沒有在執行。若設定這側的 SecurityServicesConfigured 有 2 卻沒有在執行,就懷疑是等待重新啟動或開機時的相容性問題沒有沒有查詢 Win32_DeviceGuardSecurityServicesRunning 裡有 2 嗎?記憶體完整性正在執行Configured 裡有 2 嗎?等待重新啟動或開機時的相容性問題設定與執行都已關閉

圖 9: 要看的是 Running 而不是 Configured。設定與執行要分開讀。

6.2 關掉後 Hypervisor 仍會留下的組態

只停掉記憶體完整性,基礎未必會停

記憶體完整性是承載在 VBS 之上的功能之一。關掉的只是記憶體完整性,VBS 的啟用與否由另一個設定(EnableVirtualizationBasedSecurity)管理。Microsoft 的文件也明確寫有「只啟用 VBS(不含記憶體完整性)」這種組態。8

再者,只要在用 Hyper-V、WSL 2、Windows 沙箱、虛擬機器平台,Hypervisor 就會為了它們繼續啟動。6

3.2 中看到的兩項負擔裡,「Hypervisor 墊在作業系統之下」那一項在這種情況下就算關掉也仍然留著。如果關掉記憶體完整性後 msinfo32 的「虛擬化型安全性」仍是「執行中」,表示基礎還在。

關掉記憶體完整性後仍然留下的東西就算關掉記憶體完整性的切換開關,只要 VBS 的啟用設定、Hyper-V、WSL 2、Windows 沙箱、虛擬機器平台中有任何一個是啟用的,Hypervisor 就會繼續執行,兩階段位址轉譯的負擔依然留著VBS 設定・Credential GuardHyper-V・WSL 2・沙箱・VMP什麼都沒有關掉記憶體完整性還有別的東西用 Hypervisor 嗎?Hypervisor 仍在Hypervisor 仍在有可能連基礎一起停下兩階段位址轉譯的負擔仍在

圖 10: 切換開關切掉的只有記憶體完整性。只要還有需要 Hypervisor 的其他功能,基礎就原樣留著。

連基礎一起停掉的做法不在本文範圍內

也存在停用 VBS 本身、或者不啟動 Hypervisor 的組態,但那樣一來包括 Credential Guard 在內的 VBS 上的所有功能,以及 Hyper-V、WSL 2、Windows 沙箱都會用不了。這是與「關掉記憶體完整性」完全不同、影響大得多的變更。本文不涵蓋那些步驟。想在理解運作方式之後再判斷的讀者,請先讀完連載第 1 回與第 2 回。

7. 關閉的步驟

通常從 7.1 的 Windows 安全性畫面操作。 7.2 是無法操作時的排查,7.3 是畫面用不了的環境下的替代手段。7.4 的 VMP 是另一個功能,並不是為了關掉記憶體完整性而要接著做的步驟。

7.1 從 Windows 安全性(標準步驟)

關閉: 一路做到更改設定・重新啟動・確認

  1. 開始 開啟「Windows 安全性」。
  2. 在左側選單選擇「裝置安全性」。
  3. 開啟「核心隔離」下方的「核心隔離詳細資料」。
  4. 把「記憶體完整性」的切換開關設為。出現系統管理員權限確認(UAC)時予以允許。
  5. 重新啟動電腦。 不重新啟動變更就不會生效。1
  6. 重新啟動後,用 6.1 的方法確認已經關閉。

開回去: 在同一畫面操作

要復原時,在同一畫面把切換開關設為並重新啟動。開啟時可能會進行不相容驅動程式的檢查。如果出現清單,不要強制開啟,請依第 8 章的順序處理。

要做比較時,先確認更改前後的執行狀態,再用 4.3 的方法測量。如果差異對用法沒有影響,就開回去並另找原因。

從 Windows 安全性關掉記憶體完整性的步驟從 Windows 安全性的裝置安全性開啟核心隔離詳細資料,把記憶體完整性的切換開關關掉並重新啟動,再用 msinfo32 或 Win32_DeviceGuard 確認已經關閉開啟 Windows 安全性裝置安全性核心隔離詳細資料關掉記憶體完整性重新啟動用第 6 章的方法確認

圖 11: 步驟本身很短。容易漏掉的是最後兩步(重新啟動與確認)。

7.2 切換開關是灰色、點不動時

如果是公司或學校的電腦,請不要自行繞過,去找系統管理員討論。 灰色無法操作時,可能有下面這些原因。

被原則或登錄檔固定了

如果切換開關是灰色並顯示「這項設定由系統管理員管理」,表示這台電腦的設定被群組原則或 Intune 等固定了,或者畫面被登錄檔停用了。8 如果是公司或學校的電腦,這就是系統管理員的用意。

是帶 UEFI 鎖啟用的

用群組原則的「開啟虛擬化型安全性」選擇「使用 UEFI 鎖啟用」而部署的電腦,設定保存在 UEFI(韌體)的變數中,因此無法透過遠端或原則更新來關掉記憶體完整性。8

要解除,需要先撤掉原則或登錄檔的設定,再由坐在這台電腦前的人執行清除保存在 UEFI 中的組態的步驟。在使用同樣 UEFI 鎖的 Credential Guard 的文件中,給出了以系統管理員權限用 bcdedit 刪除 EFI 變數,並在重新啟動時於實體機前核准出現的確認提示的步驟。11

光是在 UEFI 選單裡停用安全開機,並不會清除保存的組態。 還可能招致輸入 BitLocker 修復金鑰。這是「防止被隨意關掉」的設定,因此仍屬於系統管理員的職責範圍。

切換開關是灰色時的排查切換開關是灰色時,不是由系統管理員管理(原則或登錄檔),就是 UEFI 鎖(需要在電腦前清除保存在 UEFI 中的組態),兩者都不要自行繞過,去找系統管理員討論由系統管理員管理UEFI 鎖切換開關是灰色顯示的理由是什麼?被原則・登錄檔固定需要在電腦前清除 UEFI 的組態去找系統管理員討論

圖 12: 灰色不是故障,而是有人刻意固定的標記。

7.3 用登錄檔設定(畫面用不了時)

這個方法是 Windows 安全性畫面用不了的環境,或者想用指令碼設定時的替代手段。它不是繞過系統管理員設定的方法。而且要開回去時,請使用 7.1 的畫面。

用於關閉的值與命令

Microsoft 文件中記載的記憶體完整性啟用・停用的設定值如下。8

項目
路徑 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\HypervisorEnforcedCodeIntegrity
值的名稱 Enabled
類型 REG_DWORD
資料 0 為關,1 為開

在以系統管理員身分開啟的終端機中執行下面這條並重新啟動。

reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\HypervisorEnforcedCodeIntegrity" /v Enabled /t REG_DWORD /d 0 /f

這與 Microsoft 給出的、在啟用記憶體完整性之後無法開機的電腦上從修復環境(Windows RE)復原的步驟是同一個操作。8

復原時不要往登錄檔寫 1 的理由

要復原時,不要往登錄檔寫回 1,而是從 7.1 的 Windows 安全性畫面開啟。 從畫面開啟時會先跑一遍不相容驅動程式的檢查,有命中就會顯示清單(第 8 章)。3

用登錄檔寫 1,就會跳過那道檢查,下次開機時直接要求記憶體完整性。如果不相容的驅動程式還留著,就會直接招致第 8 章警告的開機失敗。可以用原則或登錄檔啟用的場合,僅限於已經透過不相容驅動程式清單與 CodeIntegrity 記錄檔確認沒有問題之後。

改了卻沒生效、或者被改回去的情況

在同一個機碼的 Locked1(UEFI 鎖)的電腦上,改這個值也不會生效。8 另外,在由組織原則管理的電腦上,下次套用原則時設定會被改回去。登錄檔是「畫面的替代」,而不是「覆蓋系統管理員設定的手段」。

用登錄檔設定時不生效的條件就算把 HypervisorEnforcedCodeIntegrity 的 Enabled 設為 0,只要同一個機碼的 Locked 是 1(UEFI 鎖)就不會生效;在受組織原則管理的電腦上,下次套用原則時設定會被改回去。要開回去時不用登錄檔,而是從 Windows 安全性的畫面操作把 Enabled 設為 0 並重新啟動Locked 是 1(UEFI 鎖)嗎?不生效(需要在 UEFI 這側解除)是被原則管理的嗎?下次套用時會被改回去會關掉(用第 6 章確認)復原時從畫面來(會有檢查)

圖 13: 登錄檔值只是寫了與畫面相同的設定,壓不過鎖與原則。

7.4 虛擬機器平台(VMP) 是另一套步驟

Microsoft 關於遊戲效能的說明中也提到了 VMP,但它是與記憶體完整性不同的另一個功能。並不是為了關掉記憶體完整性就必須把 VMP 也拿掉。

拿掉之前,先確認在用什麼功能

VMP 是 WSL 2 的前提功能。6 在使用 WSL 2、或以 WSL 2 為基礎的 Docker Desktop 的電腦上拿掉它,那些東西就跑不起來了。

Windows 沙箱不是靠 VMP 而是靠專用的選用功能啟用的,所以拿掉 VMP 也還能用。7 不過沙箱同樣跑在同一個 Hypervisor 之上,只要繼續用它,就會成為 6.2 中看到的「基礎仍在」那一側的因素。

判斷標準是「不用就拿掉」,而不是「因為會變快就拿掉」

不使用 VMP 時的操作

VMP 不在 Windows 安全性,而是在「Windows 功能」裡關閉。1

  1. 開始 搜尋「Windows 功能」,開啟「開啟或關閉 Windows 功能」。
  2. 取消「虛擬機器平台」的勾選並按「確定」。
  3. 重新啟動。
是否可以拿掉虛擬機器平台如果在用 WSL 2 或 Docker Desktop(WSL 2 後端)等依賴虛擬機器平台的功能就不要拿掉,只有不使用時才是拿掉的候選。Windows 沙箱是專用功能,拿掉 VMP 也能用,但它使用同一個 Hypervisor,所以基礎仍在不用想拿掉 VMP用 WSL 2 或 Docker Desktop 嗎?不要拿掉(會跑不起來)拿掉的候選(從 Windows 功能)重新啟動並確認沙箱是另一個功能(基礎仍在)

圖 14: 要不要拿掉 VMP,取決於「用不用這個功能」而不是快不快。

8. 開回去時 ── 對「不相容的驅動程式」的處理

本章把自己開不回去的情況在自動啟用的電腦上不知不覺變成關閉的情況分開來講。兩者都要先在驅動程式清單或記錄檔中確認,再做處理。

8.1 開不回去時,先確認驅動程式

在關閉過記憶體完整性的電腦上想把它開回去時,有時會被告知有「不相容的驅動程式」而開不了。Windows 安全性在把切換開關打開時會檢查驅動程式,若有不符合記憶體完整性規則(3.1)的驅動程式,就會顯示清單。3

處理的順序如下。

  1. 在清單中確認對象。 從「核心隔離」畫面的「檢查不相容的驅動程式」查看驅動程式的檔案名稱與提供者。
  2. 換成更新後的驅動程式。 依 Microsoft 的指引,確認裝置製造商是否提供了更新後的驅動程式。3 有時會出現在 Windows Update 的「選擇性更新」裡。
  3. 是不用的裝置的驅動程式就刪掉。 以前接過的周邊裝置、沒解除安裝乾淨的公用程式的驅動程式留在系統裡,是很常見的。
  4. 在記錄檔中確認哪個驅動程式被封鎖。 事件檢視器的 Applications and Services Logs\Microsoft\Windows\CodeIntegrity\Operational 中,以事件 ID 3087 為代表記錄著記憶體完整性造成的封鎖。4

請不要在不相容的驅動程式還留著的情況下強制開啟。 Microsoft 警告過,與記憶體完整性不相容的驅動程式會導致裝置或軟體誤動作,在極少數情況下會導致開機失敗(藍白畫面)。8 如果真的無法開機了,還準備了從修復環境把 7.3 的登錄檔值設為 0 來復原開機的步驟。8

開不回去時的處理在不相容驅動程式的清單中鎖定對象,製造商有更新版就換掉,是不用的裝置就刪掉,兩者都做不到時不要強制開啟,維持關閉並向製造商要求提供對應版本沒有不用在用開不了查看不相容驅動程式清單製造商有更新版嗎?換掉並開啟這個裝置還在用嗎?刪掉驅動程式並開啟不強制,向製造商要求

圖 15: 正道是更新驅動程式。強制開啟的代價是可能無法開機,並不划算。

8.2 自動關回去的安全裝置是有條件的

僅限於自動啟用的電腦的機制

對於 Windows 自動啟用了記憶體完整性的電腦(3.3 的預設啟用,或廠商在出廠映像中啟用的電腦),有時會內建一個安全裝置:如果在啟用之後緊接著發生開機時的當機,就自動把記憶體完整性關回去。

Microsoft 的文件說明,這個安全裝置在登錄檔的 WasEnabledByEnabledBootId 被設定的情況下發揮作用,僅在啟用後的 3 次開機期間有效,而且是廠商在出廠映像中設定的組態。4

對於從核心隔離畫面自行開啟的情況,這個行為沒有被文件化。 手動開回去時,不要指望這個安全裝置,請先依 8.1 的步驟把不相容的驅動程式處理乾淨。

自動關掉了,也不等於確定了原因

「全新安裝之後不知不覺就變成關閉了」這種現象,有時正是這個安全裝置發揮作用的結果。不過它記錄的只是「在啟用之後緊接著開機失敗了」這個事實。並不等於確定了原因就是不相容的驅動程式。 在那段期間因為無關的原因開機失敗,也會得到同樣的結果。

Microsoft 的文件也說明,如果關掉記憶體完整性後開機失敗仍在繼續,就會認定不是記憶體完整性造成的,並把設定改回去。4

原因是不相容驅動程式的可能性很高,所以要先用「不相容的驅動程式」清單與 CodeIntegrity 記錄檔取得佐證。有命中就依 8.1 的步驟處理,沒有命中就另行調查開機失敗的原因。

自動啟用的電腦上自動關回去的安全裝置在 Windows 自動啟用(設定了 WasEnabledBy 與 EnabledBootId)的電腦上,若在啟用後 3 次開機之內發生開機時當機,記憶體完整性可能自動關回去。手動開啟時這個行為沒有被文件化,不要指望它。自動關掉也只是開機失敗的記錄而不是原因的確定,所以要用不相容驅動程式清單與 CodeIntegrity 記錄檔取得佐證,有命中就更新或刪除來處理,沒有就另查原因手動開啟自動沒有沒有記憶體完整性被啟用是自動啟用(WasEnabledBy)嗎?安全裝置沒有被文件化3 次以內的開機中當機了嗎?維持啟用執行自動關回去清單或記錄檔裡有命中嗎?用更新或刪除來處理另查原因

圖 16: 安全裝置只在自動啟用的電腦上發揮作用,手動開啟時靠不上它。就算它發揮了作用,那也是訊號而不是診斷,所以要先用清單與記錄檔取得佐證再修。

9. 常見的誤解

最後確認一下在改設定前後容易混淆的幾點。

9.1「我把核心隔離關掉了」

核心隔離是畫面的名字,實際關掉的是記憶體完整性的切換開關(第 2 章)。同一畫面上的其他項目、以及 VBS 本身,都沒有被關掉。

9.2「關掉就一定會變快」

可能變快的前提是記憶體完整性確實在執行、瓶頸在 CPU 這側,尤其是 CPU 不具備 MBEC/GMET 的情況(第 4 章)。受 GPU 限制的遊戲,或原因在別處的慢,都不會變。

9.3「把切換開關關掉就完事了」

不重新啟動就不會生效,重新啟動後還需要另行確認執行狀態(第 6 章)。反過來,在被原則或 UEFI 鎖固定的電腦上,動了切換開關也會被改回去。

9.4「關掉也沒有別的影響」

針對核心程式碼注入的防線被撤掉,Windows 安全性會持續出警告,而在錯誤中點名 HVCI 的反作弊遊戲將無法啟動(第 5 章)。

9.5「關掉之後 Hypervisor 也會停」

記憶體完整性只是 VBS 之上的一個功能,只要 VBS 的設定、Credential Guard、Hyper-V、WSL 2、Windows 沙箱、VMP 中任一個是啟用的,Hypervisor 就會繼續執行(6.2)。

誤解與實際的對應表「關掉了核心隔離」這個誤解對應的實際是關掉的只有記憶體完整性的切換開關;「一定會變快」對應的是取決於組態;「關掉切換開關就完事」對應的是還需要重新啟動與確認;「Hypervisor 也會停」對應的是有其他功能時它仍會留下關掉了核心隔離關掉的是記憶體完整性的切換開關一定會變快取決於組態。實測再判斷關掉切換開關就完事需要重新啟動與執行確認Hypervisor 也會停有其他功能就會留下

圖 17: 誤解大多來自把「畫面的名字」與「機制的名字」混在一起。

10. 總結

記憶體完整性(HVCI) 是把進入核心的驅動程式的檢查哨,搬到核心之外的隔離環境的機制。這次搬遷的代價是要把 Hypervisor 墊在下面、要由 Hypervisor 強制執行權限,在某些組態下會影響效能。

判斷可以分成下面 3 個階段來整理。

  1. 確認用途與會失去的東西。 關掉的候選是那些不涉及業務資料或內部網路、也不玩點名 HVCI 的反作弊遊戲的專用機。不能只憑速度來決定。
  2. 確認執行狀態之後,以相同條件實測。 使用 msinfo32 或 Win32_DeviceGuard,確認更改前後狀態確實變了。容易出現差異的是沒有 MBEC/GMET 的舊 CPU 與受 CPU 限制的遊戲,受 GPU 限制的遊戲或日常用途則不容易出現。多測幾次,看這個差異是否對用法有影響。
  3. 依差異與用途,決定維持還是復原。 關掉是測出差異之後的選項。在使用 Hyper-V・WSL 2・沙箱・VMP 的電腦上基礎仍在,很難出現期待的差異。差異對用法沒有影響就開回去,用途變化時也要重新檢視。開不回去時的正道是更新驅動程式,不要強制開啟。

「關掉會變快」不是假話。但只有加上「在自己的電腦上」「實測過」「知道會失去什麼」這 3 個條件,它才成為判斷的材料。

相關文章

相關的諮詢領域

小村軟體有限公司承接 Windows 應用程式與安全性功能(記憶體完整性・VBS・App Control)的相容性調查、驅動程式引起的問題分析,以及用測量來釐清「電腦或應用程式很慢」原因的效能調查。歡迎從「關掉了也沒變快」之後的部分開始諮詢。

參考連結

  1. Microsoft Support, Options to optimize gaming performance in Windows 11. 關於 Windows 11 為記憶體完整性(HVCI) 與虛擬機器平台(VMP) 使用虛擬化;在遊戲裝置的部分情境與組態中它們處於開啟狀態可能帶來效能影響;以及從核心隔離畫面關閉記憶體完整性、從「Windows 功能」關閉 VMP 並重新啟動的步驟。  2 3 4 5 6 7

  2. Microsoft Learn, Memory integrity and virtualization-based security. 關於記憶體完整性(HVCI) 在 VBS 的隔離環境中執行程式碼完整性驗證、核心記憶體分頁只有在通過驗證之後才可執行且可執行分頁不會變成可寫,以及「記憶體完整性」與「HVCI」指的是同一個功能。  2 3 4 5 6

  3. Microsoft Support, Device security in the Windows Security app. 關於核心隔離是透過在記憶體中隔離 Windows 核心處理程序來防禦惡意軟體的一組功能;記憶體完整性(HVCI) 是讓惡意程式更難透過低階驅動程式挾持電腦的功能,可用切換開關開啟/關閉;硬體虛擬化需要在 UEFI/BIOS 中啟用;以及驅動程式不相容時要向裝置製造商確認更新後的驅動程式。  2 3 4 5 6

  4. Microsoft Learn, Memory integrity and VBS enablement. 關於記憶體完整性在 Windows 11 的全新安裝中若硬體相容則預設啟用而升級不會自動啟用;自動啟用的硬體條件(CPU 世代・8GB 記憶體・64GB SSD・受支援的驅動程式・已啟用虛擬化);由 WasEnabledBy/EnabledBootId 控制的開機失敗時自動停用的安全裝置;用 msinfo32 與 Windows 安全性確認狀態;以及可以在 CodeIntegrity 操作記錄檔的事件 ID 3087 中確認被封鎖的驅動程式。  2 3 4 5 6 7

  5. Microsoft Learn, Virtualization-based Security (VBS). 關於 VBS 用硬體虛擬化與 Windows Hypervisor 建立隔離環境、以核心可能被入侵為前提作為作業系統信任的起點、SLAT 是 VBS 的必要條件,以及支援記憶體完整性的驅動程式與安全開機是前提。  2

  6. Microsoft Learn, Manual installation steps for older versions of WSL. 關於要使用 WSL 2 需要啟用「虛擬機器平台」這個選用功能。  2 3

  7. Microsoft Learn, Windows Sandbox. 關於 Windows 沙箱是使用 Windows Hypervisor 的輕量桌面環境,透過「開啟或關閉 Windows 功能」中的「Windows 沙箱」選用功能啟用。  2

  8. Microsoft Learn, Enable virtualization-based protection of code integrity. 關於記憶體完整性在 Intel Kaby Lake 以後的 Mode-Based Execution Control 與 AMD Zen 2 以後的 Guest Mode Execute Trap 上運作得更好,而更舊的處理器依賴名為 Restricted User Mode 的模擬因此效能影響更大;Windows 安全性中的設定位置與 22H2 以後的警告顯示;群組原則的 UEFI 鎖;HypervisorEnforcedCodeIntegrity 下的 EnabledLocked 登錄檔值;只啟用 VBS 的組態;WasEnabledBy 造成的畫面灰色化;Win32_DeviceGuard 各屬性的意義(SecurityServicesRunning 的 2 是記憶體完整性,AvailableSecurityProperties 的 7 是 MBEC/GMET);用 msinfo32 確認;以及不相容驅動程式造成開機失敗的警告與從 Windows RE 復原的步驟。  2 3 4 5 6 7 8 9 10 11 12 13 14 15

  9. Microsoft Learn, Virtual Secure Mode. 關於 Mode-Based Execution Control(MBEC) 讓記憶體的執行保護可以分成使用者模式執行(UMX)與核心模式執行(KMX) 分別設定。 

  10. Riot Games Support, Error VAN: RESTRICTION. 關於 Vanguard 在 Windows 11 上把 HVCI(記憶體完整性)用於系統完整性的驗證,若無法正確啟動就封鎖遊戲啟動;以及它指引使用者分別啟用錯誤訊息中列出的安全性功能(TPM 2.0、安全開機、記憶體完整性、IOMMU)。 

  11. Microsoft Learn, Configure Credential Guard - Disable Credential Guard with UEFI lock. 關於帶 UEFI 鎖啟用時設定保存在 EFI(韌體)變數中,因此需要先停用原則或登錄檔的設定,再用 bcdedit 刪除 EFI 變數,並在重新啟動時於該電腦前核准出現的 UEFI 變更確認提示。 

共用相同標籤的最新文章。能以相近的主題延伸理解。

與本文相近的主題頁面。以本文為起點,可進一步連到相關服務與其他文章。

常見問題

整理諮詢這個主題時常見的問題。

記憶體完整性(HVCI)是什麼?
它是 Windows 安全性「裝置安全性」>「核心隔離」裡的功能,正式名稱是「Hypervisor 保護的程式碼完整性(HVCI)」。它在 Hypervisor 建立的隔離環境中對載入核心(作業系統核心)的驅動程式做簽章驗證,只讓通過驗證的分頁可執行,而且不允許對可執行的分頁寫入。這個功能是為了讓惡意程式更難透過低階驅動程式挾持電腦。
關掉記憶體完整性真的會變快嗎?
有的組態會變快,有的組態幾乎沒有變化。Microsoft 說明過,在遊戲裝置的部分情境與部分組態中,記憶體完整性與虛擬機器平台可能帶來效能影響。容易出現影響的是沒有 Mode-Based Execution Control(Intel 從第 7 代開始搭載)或 Guest Mode Execute Trap(AMD 從 Zen 2 開始搭載)的舊 CPU,這時會改用模擬來代替,效能影響就更大。另一方面,如果遊戲的瓶頸在 GPU,或者變慢的原因是記憶體不足、磁碟、發熱、電源模式,那麼關掉也不會變。在自己的電腦上以相同條件實測再判斷才可靠。
請告訴我關掉記憶體完整性的步驟。
打開 Windows 安全性,在「裝置安全性」>「核心隔離詳細資料」中把「記憶體完整性」的切換開關關掉,然後重新啟動電腦。不重新啟動設定就不會生效。如果開關是灰色的並顯示「這項設定由系統管理員管理」,表示它被組織的原則固定了,請不要自行更改,去找系統管理員討論。
明明關掉了卻沒變快,為什麼?
請先用 msinfo32(系統資訊)的「虛擬化型安全性」欄位或 PowerShell 的 Win32_DeviceGuard 類別,確認它是否真的關掉了。有時是因為沒有重新啟動,或者被原則改了回去,所以仍然開著。其次,如果你在用 Hyper-V、WSL 2、Windows 沙箱或虛擬機器平台,那麼就算關掉記憶體完整性,Hypervisor 本身仍會繼續執行。再者,如果變慢的原因本來就不是記憶體完整性,那麼關掉也不會變快。
想把記憶體完整性開回去卻開不了(提示有不相容的驅動程式),該怎麼辦?
在 Windows 安全性「核心隔離」畫面顯示的不相容驅動程式清單中確認對象,把它換成裝置製造商提供的更新版驅動程式才是正道。如果是已經不用的裝置的驅動程式,刪掉也沒關係。哪些驅動程式被封鎖,也可以在事件檢視器的 CodeIntegrity 操作記錄檔(以事件 ID 3087 為代表)中確認。在不相容的驅動程式還留著的情況下強制開啟,Microsoft 並不支援,而且可能導致無法開機。
為了遊戲關掉之後,另一款遊戲啟動不了了。
一部分反作弊(如 Riot Games 的 Vanguard)在 Windows 11 上把記憶體完整性(HVCI)用於系統完整性的驗證,在 VAN: RESTRICTION 錯誤中點名 HVCI 的電腦上,不開啟它遊戲就無法啟動。這並不是對所有 Windows 11 電腦一律要求,而是取決於錯誤裡列出了什麼。如果屬於這種情況,就需要把記憶體完整性開回去並重新啟動。要不要關掉,請同時看「想要加速的遊戲」與「要求 HVCI 的遊戲」兩邊再決定。

作者檔案

本文作者的個人檔案頁面。

Go Komura

小村軟體有限公司 代表

以 Windows 軟體開發、技術諮詢與故障調查為中心,在難以重現的故障調查與既有資產仍在運作的專案上具有優勢。

回到部落格一覽