隨著作業系統的升級或發展過程,在當前安全威脅日益高張的年代,當然作業系統的相關安全性與設計也會隨之強化。
硬體的驅動程式是會跟作業系統 (OS) 直接作動的,所以從安全性的角度來看,隨著時間的推進而造成一些外部裝置的驅動程式過於老舊,沒有跟著新版作業系統的安全性設計而改版,產生與新版作業系統發生不相容問題,也不難理解。
但是就這樣把問題都推給微軟,說通通都是 Windows 11 的錯,這就很難令人理解了🤔
反觀果粉就不會有這種心態…很妙😏
本篇文章處理過程有點岔題跟延遲一點發文時間。
順便等久一點時間後看看該 EZ100 PU 讀卡機的廠商,是否會針對其驅動程式有所改版,所以最後卻變成先記錄 "在 Windows 11 上遇到的怪事: 開啟 Windows 安全性 應用失效..." 的問題😅
好,首先先到出產 EZ100 PU 讀卡機的 CASTLES TECHNOLOGY (虹堡科技) ,可以在下載專區找到 EZ100 系列的驅動程式 。
由於 Windows 11 是在 2021 年 10 月初正式發表,第一次看到此問題時是在的 2022 年 3 月底 4 月初的時候。
要求半年後就有符合 Windows 11 安全性的驅動程式版本可能是太苛刻廠商了,而到了 7 月初該廠商也大方的把該讀卡機的驅動程式寫上有支援 Windows 11 與其他 Windows 版本並列在官網上。
好,抱持著姑且一試下載後重新安裝完畢,結果 Windows 11 仍然跳出相同的警示訊息。
查看裝置管理員與驅動程式版本結果如下:
結論:
到了 2022 年七月初該廠商在官網上宣稱有支援 Windows 11 的該款 EZ100 PU 讀卡機的驅動程式,在有完整的 Windows 11 作業系統的安全保護措施下仍是無法 "正常" 使用。
所以,仍是先將 "EZ100 PU 讀卡機" 在裝置管理員當中設定為停用。
接著透過 Windows 安全性 的 "裝置安全性" 當中找到 "核心隔離",並點選 "核心隔離詳細資料"。
或是透過 "windowsdefender://coreisolation/" 的 URI 連結直接開啟 "核心隔離詳細資料"。
在此會看到 "記憶體完整性" 的開關是 "開啟" 的,然後會注意到上面有一條黃色的字 "告知" 此控制為系統管理。
請參考微軟官方文件對於 "核心隔離" 的作用與解釋,而由於在 Windows 11 預設是 "開啟",在 Windows 10 預設是關閉(可設定開啟),所以會發現此 EZ100 PU 的讀卡機驅動程式無法正確的被有 "記憶體完整性" 保護中的 Windows 系統所使用。
這是 Windows 10 之後微軟為了強化 Windows 作業系統的安全性設計,由於虹堡科技沒有針對驅動程式進行改版,進而造成在 Windows 11 上無法正確使用 EZ100 PU 讀卡機。
而…
是硬體的驅動程式必須要去符合 Windows 所設計的安全性?
還是 Windows 所設計的安全性要去符合硬體的驅動程式?
就由看倌捧友們自行考慮了🤗🤗🤗
所以該怎辦?
總還是要使用讀卡機,不然要用 "網路 ATM"、"自然人憑證"、"工商憑證"、"健保 IC 卡"…等身分驗證的時候就麻煩了。
按照 Windows 11 的安全性設計來看,會建議核心隔離的 "記憶體完整性" 還是要保持開啟,以確保在記憶體中能隔離 Windows 的重要核心程式執行。
說真的一般使用者要在電腦中 "常態性" 使用讀卡機的場景並不多,就如上述提到的使用 IC 晶片卡場景,才需要用到讀卡機進行驗證的機會。
所以在本文提供一個 workaround:
如果需使用 EZ100 PU 讀卡機時就先暫時把 Windows 的 "記憶體完整性" 功能給關閉;等到用完 EZ100 PU 讀卡機的時候,再把 Windows 的 "記憶體完整性" 功能給開啟。
這樣至少能在大部分使用電腦的時候,能符合 Windows 10 之後所規劃的安全設計使用電腦。
如果硬是要關閉 "記憶體完整性" 不再開啟,就請自行考慮其風險並承擔之。
首先,透過系統管理員身分執行 "登錄檔編輯程式"(搜尋: regedit),並找到 HypervisorEnforcedCodeIntegrity 的設定值 Enabled,其值理論上應該預設值是 "1"。
將其值改成 "0"。
接著,重新啟動 Windows 電腦。
完成後,再次看到 Windows 安全性當中的 "核心隔離" 其 "記憶體完整性" 就呈現 "關閉" 的狀態。
接著再到 "裝置管理員" 啟用 EZ100 PU 讀卡機。
就能夠正常使用 EZ100 PU 讀卡機,處理相關的 IC 卡作業了。
按照前述說的,使用完讀卡機後要記得再次去 Windows 安全性當中的 "核心隔離" 其 "記憶體完整性" 開啟 "記憶體完整性" 的功能。
But…
會遭遇無法從 UI 介面開啟 "記憶體完整性" 的功能的問題。
其理由是有不相容 "記憶體完整性" 功能的 "驅動程式" 正在 Windows 系統執行中。
所以,反過來動作。
先去 "裝置管理員" 中將 "EZ100 PU 讀卡機" 停用,再透過系統管理員身分執行 "登錄檔編輯程式"(搜尋: regedit),並找到 HypervisorEnforcedCodeIntegrity 的設定值 Enabled,將其值改回 "1"。
變更完畢後,重新啟動電腦。
電腦重新啟動完成後,再到 "Windows 安全性" 檢查 "核心隔離" 是否有 開啟 "記憶體完整性" 的功能。
當然,以上動作也可以自行設計 batch file 來操作喔!
第一步,先建立兩個設定 Regedit 的檔案:
設定HypervisorEnforcedCodeIntegrity
關閉 的登錄檔,並請存成一個副檔名為 .reg 的檔案。
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\HypervisorEnforcedCodeIntegrity]
"Enabled"=dword:00000000
設定HypervisorEnforcedCodeIntegrity
開啟 的登錄檔,並請存成一個副檔名為 .reg 的檔案。
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\HypervisorEnforcedCodeIntegrity]
"Enabled"=dword:00000001
第二步,在裝置管理員當中查詢 EZ100 PU SmartCard Reader 的詳細資料,確認此裝置在電腦上的 "裝置例項路徑"。
第三步,建立其對應的 batch file 檔案:
撰寫 關閉 的指令檔,並請存成一個副檔名為 .bat 的檔案。
@echo off
rem 下一行為讀取 "關閉" HypervisorEnforcedCodeIntegrity 的 .reg 檔案。
REGEDIT /s "<替換成指向關閉 HypervisorEnforcedCodeIntegrity 的 .reg 檔案路徑>"
rem 下一行為 "啟用" SmartCard Reader 的指令。
pnputil /enable-device "<替換成上一步所取得的裝置例項路徑>"
@echo start OK
rem 下一行為 "立刻重新啟動電腦" 的指令。
shutdown /r /t 0
撰寫 開啟 的指令檔,並請存成一個副檔名為 .bat 的檔案。
@echo off
rem 下一行為 "停用" SmartCard Reader 的指令。
pnputil /disable-device "<替換成上一步所取得的裝置例項路徑>"
@echo start OK
rem 下一行為讀取 "開啟" HypervisorEnforcedCodeIntegrity 的 .reg 檔案。
REGEDIT /s "<替換成指向開啟 HypervisorEnforcedCodeIntegrity 的 .reg 檔案路徑>"
rem 下一行為 "立刻重新啟動電腦" 的指令。
shutdown /r /t 0
PS: rem 為批次檔或 CONFIG.SYS 的備註或說明。
最後,在需要使用時 "快速連點擊兩下" 對應的 .bat 檔案(需要提升為管理者權限),即可完成前述自己慢慢用 UI 設定的動作。
注意: 作動 .bat 後會立刻重新啟動電腦,操作前請先關閉所有電腦上的作業。
以上完成。
I'm a Microsoft MVP - Developer Technologies (From 2015 ~).
I focus on the following topics: Xamarin Technology, Azure, Mobile DevOps, and Microsoft EM+S.
If you want to know more about them, welcome to my website:
https://jamestsai.tw
本部落格文章之圖片相關後製處理皆透過 Techsmith 公司 所贊助其授權使用之 "Snagit" 與 "Snagit Editor" 軟體製作。