2023年4月9日 星期日

VMware 出現 侧通道缓解 的錯誤信息

VMware 出現 侧通道缓解 的錯誤信息

信息是:

您在运行该虚拟机时启用了侧通道缓解。侧通道缓解可增强安全性,但也会降低性能。
要禁用缓解,请在虚拟机设置的“高级”面板中更改侧通道缓解设置。有关更多详细信息,请参阅 VMware 知识库文章 79832,网址为

會出現這個是因為安裝了 docker 被打開系統中的虛擬機功能導致的,雖然有個解決辦法是依照網址操作把那功能給官掉就好了,不過虛擬機性能變的超級差,最後還是得復原才能正常。

關掉的方法是先移除 docker 然後在確保這兩個功能關閉即可。



如果電腦也有開 wsl 記得要轉回來 ws1 不然可能會無法使用

wsl --set-version Ubuntu-20.04 1


還有一個問題是這頓操作過程可能會新增一個 Hyper-V 的虛擬網卡出來,會導致VM預設去讀那張卡,因為已經刪掉docker並且關掉虛擬功能了,那張卡會沒網路。

需要手動那張卡刪除或是從VM的設定中選中自己的自己網卡,不然自動狀態會優先讀 Hyper-V 的網卡導致梅網路。



2023年4月5日 星期三

JavaScript 轉譯 XML 特殊符號

JavaScript 轉譯 XML 特殊符號

因為只有5個而已沒有線程的函式庫可以用,自己刻了一個又覺得直接替換好像有點太簡單,姑且看了一下怎麼用一張映射表來轉譯。

這個可以透過修改映射表任意變更對應的關係,相對來說應用在別的對方要修改可能會方便不少。


代碼

先上最簡單的直接替換掉

// 將實體字符轉換為特殊字符
const encodeXml = str => str.replace(/&/g, '&')
                            .replace(/</g, '&lt;')
                            .replace(/>/g, '&gt;')
                            .replace(/"/g, '&quot;')
                            .replace(/'/g, '&apos;');

// 將特殊字符轉換為實體字符
const decodeXml = str => str.replace(/&amp;/g, '&')
                            .replace(/&lt;/g, '<')
                            .replace(/&gt;/g, '>')
                            .replace(/&quot;/g, '"')
                            .replace(/&apos;/g, "'");

再來這個是統一拉到映射表理管理的做法

// 映射表
const entitiesMap = {
  '&': '&amp;',
  '<': '&lt;',
  '>': '&gt;',
  '"': '&quot;',
  "'": '&apos;',
}; const rvEntitiesMap = Object.fromEntries(Object.entries(entitiesMap).map(([k, v]) => [v, k]));

// 將實體字符轉換為特殊字符
const encodeXml = str => {
  const regex = new RegExp(`[${Object.keys(entitiesMap).join('|')}]`, 'g');
  return str.replace(regex, m => entitiesMap[m]);
};
// 將特殊字符轉換為實體字符
const decodeXml = str => {
  const regex = new RegExp(`(${Object.keys(rvEntitiesMap).join('|')})`, 'g');
  return str.replace(regex, m => rvEntitiesMap[m]);
};

// 測試
const text = '<root><node id="1">Hello & World</node></root>';
const encodedText = encodeXml(text);
const decodedText = decodeXml(encodedText);
console.log('原始文本:', text);
console.log('編碼後文本:', encodedText);
console.log('解碼後文本:', decodedText);

結果

原始文本: <root><node id="1">Hello & World</node></root>
編碼後文本: &lt;root&gt;&lt;node id=&quot;1&quot;&gt;Hello &amp; World&lt;/node&gt;&lt;/root&gt;
解碼後文本: <root><node id="1">Hello & World</node></root>




版本問題

反轉哈希表的部分需要ES2019才能跑,不能跑可以替換成這個舊版的寫法

const rvEntitiesMap = Object.entries(entities).reduce((acc, [k, v]) => {
  acc[v] = k;
  return acc;
}, {});

-

2023年3月18日 星期六

【Win10/11】P3色域顯示器限縮回RGB色域

P3色域顯示器限縮回RGB色域

最近剛買一台螢幕,原本已經有一台XG27UQ,又添加了一台U2723QE,沒加沒事這一家上去之後發現怎麼色域變了感覺很黯淡應該是RGB色域。

搞了好久才發現單接XG27UQ色域是正常的P3,但是接上第二台U2723QE之後就自動跳回RGB色域了,顏色變超淡。

之前也曾經發生過筆電上的螢幕色域異常的問題當初是這樣解決的
CHG: 筆電接上電視畫面偏白,筆電上的螢幕也變白 (charlottehong.blogspot.com)

不過我XG27UQ是掛在NVIDIA上面根本沒得選擇,弄了好久才找到問題點。


色彩管理色域限縮

之前裝過官方給的ICC色彩描述檔案,當初以為是這東西只有開啟Adobe全家桶之類的軟體才會有作用裝完就沒管它了,調了下才發現原來這可以影響到全域的。





裝好色彩描述檔之後,這個選項如果有打勾就會套用了色域限縮了,整台電腦都會限縮回RGB色域。


顯示器色域限縮

需要從軟體下手是因為這個型號的螢幕沒在韌體上做色域限縮,高階一點的或是美術螢幕通常是可以直接從韌體層面限縮色域的。




2023年3月16日 星期四

Edge 如何移除右上角的 Bing預覽圖示

Edge 如何移除右上角的 Bing預覽圖示



近期版本更新之後右上角多出一個很醜的圖標藍色的大B,超級顯眼又很醜。




方法1 由設定內關閉

版本 111.0.1661.54 (官方組建) (64 位元),自這個版本開始微軟追加能隱藏的選項了。

位置在哪這裡
edge://settings/sidebar/appSettings?hubApp=2354565a-f412-4654-b89c-f92eaa9dbd20

或是手動點擊【側邊攔 / 探索】進入設定頁面



然後把顯示探索隱藏掉






方法2 修改捷徑 (無須管理員權限)

追加啟動參數 --disable-features=msUndersideButton

對著桌面的捷徑按下右鍵內容,找到開始位置然後在最後方追加上面的命令f。

這個有個但書是,預設Edge的捷徑是安裝在公用資料夾裡面,公用資料夾需要管理員權限才能存取,如果沒有管理員權限的話桌面的捷徑直接原地複製一個修改即可,不過副作用是桌面會有兩個一模一樣檔名的捷徑。



完成之後需要把 edge 完整關閉才會生效,關閉的方法是按右上角的三個點,然後選擇最下方的關閉 Microsoft Edge 在手打打開即可


另外已經釘選到工作列的捷徑不會生效,需要移除重新釘上去才會有作用,重新釘選的時候點選桌面已經更改過的捷徑按右鍵釘選


最後一個坑就是 edge 在開機的時候會自動在背景預啟動,因為這個背景啟動是不帶參數的,會導致必須先打開一次在用上面的方法關掉

設定裡面可以關掉這個預啟動






方法3 修改登錄檔

直接從原則上禁止該圖標

在開始搜尋 Powershell 並按下右鍵選擇使用系統管理員開啟,然後輸入下面的命令

reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Edge" /v "HubsSidebarEnabled" /t REG_DWORD /d 0 /f




執行完畢之後在 edge 網址列輸入 edge://policy 進入原則管理頁面,然後點擊重新載入原則,套用完畢之後就生效了



按下之後就會消失了,不過有個小小的副作用是按下設定的時候最底下會多出一個由您的組織管理的字樣




加餐使用者圖示未登入的紅點

封面圖那個醜醜的B圖示的左邊一點的使用者圖示,如果未登入會有個紅色的圖標很顯眼,那個對應的原則是下面的指令

reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Edge" /v "ExperimentationAndConfigurationServiceControl" /t REG_DWORD /d 0 /f

一樣需要重新載入原則才會生效


2023年3月9日 星期四

Windows 如何清除 KMS授權 重新登錄正版彩盒序號

Windows 如何清除 KMS授權 重新登錄正版彩盒序號

如果原本電腦是已經啟用過KMS直接輸入應該會報錯,必須先清除KMS授權才可以(包含office)重新輸入序號授權。

在切換之前需要先將KMS授權清掉,否則直接輸入會跳錯誤無法切換。


清除 KMS 授權重新啟用 Retail 授權

打開終端機

  • Win11
    按下 Win+X 然後選擇 終端機(系統管理員) 打開

  • Win10
    按下 Win+X 然後選擇 Windows PowerShell(系統管理員) 打開


0. 清除授權 (選用)

這裡不執行清除其實也無所謂,在下一步驟切換Retial授權後會自動刷掉這些。
# 清除金鑰管理服務電腦名稱(KMS Host)
cscript -nologo c:\windows\system32\slmgr.vbs -ckms

# 清除登入中的金鑰
cscript -nologo c:\windows\system32\slmgr.vbs -cpky

# 清除授權金鑰
cscript -nologo c:\windows\system32\slmgr.vbs -upk


1. 切換至Retial授權

在KMS授權狀態下無法啟用購買的序號,要先用微軟公開的公版序號將授權轉回Retial授權狀態才可以啟用

下面依據自己購買的版本選擇版本

# 切換到家用版 (Retial授權)
cscript -nologo c:\windows\system32\slmgr.vbs -ipk "YTMG3-N6DKC-DKB77-7M9GH-8HVX7"

# 切換到專業版 (Retial授權)
cscript -nologo c:\windows\system32\slmgr.vbs -ipk "VK7JG-NPHTM-C97JM-9MPGT-3V66T"

# 切換到企業版 (Retial授權)
cscript -nologo c:\windows\system32\slmgr.vbs -ipk "XGVPP-NMH47-7TTHJ-W3FW7-8HV2C"

* 失敗跳出錯誤的話,拔掉網線在斷網的狀態下重新嘗試一次

 

然後確認授權有沒有變回未啟用狀態

# 檢查授權狀態
cscript -nologo c:\windows\system32\slmgr.vbs -dli

倒數第二行有出現【授權狀態: 通知】就表示切換成功了




2. 重新輸入授權金鑰

這邊 "購買的金鑰" 自行替換成自己的序號,也可以單純只輸入 Changepk打開圖形介面輸入。

# 輸入Retail金鑰
Changepk /ProductKey "購買的金鑰"


再來檢一下授權狀態如何 (也可以打開設定從關於檢視)

# 檢查授權狀態
cscript -nologo c:\windows\system32\slmgr.vbs -dli

* 授權還是未啟用狀態的話,重新啟動就好了。(主要是管理啟用的服務要重啟,不重啟要隔一段時間才會自動跑驗證)

 


確認一下最後一行【授權狀態: 已取得授權】就表示成功了




其他

測試的時候有在步驟2的地方有嘗試用過 slmgr /ipk 輸入正版序號過,結果那序號不知道怎麼樣就不能用了,即便用UI輸入序號也不能使用。

後來解決辦法是按"難移排解",從其他電腦獲取數位授權(先借來用一下),有成功啟用。啟用之後打開設定再次從UI介面輸入序號才成功的,姑且用 Showkeyplus 查詢後確認是這組序號沒問題,就當作解決了。

不確定是不是 ipk 無法啟用 Retail 授權,總之有發生這樣的事情小心為上。



參考

- 序號源:Generic Product Keys to Install Windows 10 Editions

用於取得大量啟用資訊的 Slmgr.vbs 選項 | Microsoft Learn




2023年2月12日 星期日

WinRE 分區是什麼可否刪除

WinRE 分區是什麼可否刪除

WinRE系統是當系統無法正常啟動時應急用的系統,他有基本命令提示自元可以使用,以及自動修復系統。如果是筆電有內建原廠恢復系統,也會在這個位置。

第二個功用就是當有重大更新時,會需要用到WinRE來更新系統檔案,這東西沒了可能會影響到某些重大更新跑步了。

通常情況下預設的光碟ISO檔案安裝出來的Windwos會自動切一個WinRE分區出來讓修復系統使用,這個在以前很早期的Win10上大概是576MB左右而已,後來慢慢有變大成768MB到了目前Win11已經漲到1G了相當的大。



RE系統相關操作命令

修復映像檔可以參考這篇站內文
CHG: 修復 Windows RE分區 重新啟用 (charlottehong.blogspot.com)

指令常用的大概就這幾個,剩下的參考微軟的技術文件

reagentc /enable
reagentc /disable
reagentc /info

微軟技術文件:REAgentC 命令列選項 | Microsoft Learn



RE系統映像檔

如果關閉RE系統的話,掛裡面的映像檔會被恢復到原始的位置上

預設的映像檔原始位置

C:\windows\system32\recovery

預設釋放出去的映像檔位置在

WinRE分區:\recovery\WindowsRE

釋放到哪裡是參照這份檔案

C:\Windows\System32\Recovery\ReAgent.xml

雖然是參照這份xml檔案,但實際上嘗試修改似乎不是所有地方都起作用,主要操作還是得靠 reagentc 來執行,執行完畢xml對應的位置就會被修改了。



沒有RE修復分區如何手動建立

雖然預設使用ISO安裝完畢之後會自動分割RE修復分區,但如果不是用官方安裝程式安裝而是直接用DISM解出來的系統預設就沒有修復分區。

這不是太大問題就是了,沒有切分區的情況下啟用RE系統的話,會直接被釋放到C曹底下recovery資料內。當重大更新時因為要動到C曹的關係會自動壓縮足夠的空間並釋放到其他分區。

所以其實放著不管無所謂反正時間到了總要更新就會自己分出去了,是分區有兩個一個比較大一個比較小的話,很顯然就是系統安裝的比較早,以前的修復分區空間不足,更新的時候又做了一個更大的出來了。

手動建立的話可以參照微軟的手冊跟著做就可以造出來了
部署 Windows RE | Microsoft Learn

RE分區本身不是太特別的空間,在MBR下他的識別碼是27,在GPT下識別碼是de94bba4-06d1-4d40-a16a-bfd50179d6ac,安裝檔做出來的空間預設是隱藏這樣。

這部分在手冊的步驟裡有提到,更詳細的可以參考手冊的過程應該更容易理解。



RE修復分區是否可刪除

如上面所提到的啟用RE系統的時候把映像檔釋放到分區,如果不先關掉RE系統就直接刪除分區,映像檔就直接被幹掉了。映像可以從別台電腦或是官方下載ISO直接從裡面提取。

如同上述如果沒有RE分區那麼映像檔會被釋放到C曹底下,所以RE分區完全可以刪除的,只要正確的移除即可。

不過哪天WindwosUpdate重大更新的時候會自動把C曹底下的收回,並壓縮出一個RE分區擅自釋放出去就是了,如過真的嫌RE分區礙眼,可能需要定期清理。

清理可以參照這篇站內文章,有寫好線程的移除Bat可以使用。

CHG: [Win10/11] 如何刪除 修復磁碟分割區 (RE分區) (charlottehong.blogspot.com)





2023年2月10日 星期五

移除Windows 11桌面右下方「不符合系統需求」浮水印

移除Windows 11桌面右下方「不符合系統需求」浮水印

好像並不是所有電腦都會出現,不確定具體條件是什麼但總之出現了的話可以從登錄檔隱藏這個提示訊息

新增登錄檔

先按下 Win+X 然後再按下 A ➔ 打開終端機,然後輸入以下的代碼

reg add "HKEY_CURRENT_USER\Control Panel\UnsupportedHardwareNotificationCache" /v "SV2" /t REG_DWORD /d 0 /f

輸入完畢再重新啟動電腦就好了。




對應的登錄檔位置