2022年6月6日 星期一

BIOS如何引導GPT磁碟中的Windwos開機

BIOS如何引導GPT磁碟中的Windwos開機




這其實是可以實現的,主要是GPT並沒有占用MBR起始的那一段位址,這就意味著只要把那段位址補上去MBR的開機引導,仍然可以被BIOS識別。

為什麼BIOS不能引導GPT是因為,微軟的MBR預設就會去找被標記啟動的磁區中的bootmgr,然後bootmgr找到BCD,然後順著BCD的內容找到Windows資料夾的位置並啟動內核。

關鍵在於GPT分區就沒辦法讓你設置啟動標記,所以肯定啟動不了的打死這條路線了。至於Windows資料夾的位置,本身並沒有限制他可以存在邏輯分區也可以存在GPT分區下。只有bootmgr被限制必須在啟動磁區不然BIOS就找不到了。

具體怎麼實現在GPT前段寫入MBR的引導的,我並不清楚只是拿現有的工具組合起來的。個人猜測可能是直接去動硬碟的底層16進制編碼,把GPT未使用的前段補上,計算扇區起始與結束正好符合GPT的分區,讓BIOS讀取的時候能恰好讀到正確的位置。

這邊用的Ventoy來引導,因為Ventoy並沒有辦法引導到BCD所以繞一個路讓Ventoy來開ISO檔案中的BCD檔案,然後再讓BCD引導到GPT分區下的Windwos資料夾,藉此實現的。

參考的文章中有一篇是掛一顆虛擬磁碟,讓BIOS找到MBR磁碟中的bootmgr,然後才引導到GPT中的Windwos。這也是一個解法,簡單說就是要想辦法讓BIOS找到bootmgr就對了。而最簡單的辦法是直接讓一顆MBR硬碟或USB來引導。

本篇要實現的是只有單一硬碟下如何引導。

流程

大概先解釋一下要幹嘛,這邊還有一個分支是,新裝的系統與既有的系統(不洗掉),中間分支處再解釋

  1. 準備第二個系統或PE開進去,先把磁碟轉換成GPT格式。
  2. 切成兩個分區,開頭132M與剩餘 (100M引導與32M的Ventoy)
    分支a. 如果是新裝系統在這邊把它裝到後面分區
    分支b 如果是既有的系統利用diskgenius把前面空出132M (現有系統擠到分區2),並格式化出NTFS分區
  3. 利用bdcboot把BIOS引導寫到分區2,並找到BCD文件複製出來。
  4. 編輯Window11原廠的ISO,只留bootmgr與boot/BCD剩下的都砍掉,然後把BCD文件替換成剛剛的。最後把編輯完成的ISO並放到分區1。
  5. 安裝無損版的Ventoy

上述完成後重啟就可以順利引導開機了。
有空再補圖與細節過程,今天測試出來的結果先把流程保存下來。



問題

這種方式啟動的作業系統有個問題,系統設定裡面的啟動清單會看不到,因為啟動流程是從ISO檔案轉過來的ISO卸載了就不見了。會直接導致休眠之後喚醒的問題,找不到啟動檔可以啟動。RE修復分區也沒辦法正常運作。



採到的坑

  • Ventoy雖然可以用外掛啟動VHD但是他的啟動似乎是強迫用Ventoy的BCD並不是我設置的,弄半天就是引導不成功,最後測試ISO才起來的。
  • Windows不能安裝在分區1,因為Ventoy載入的時候會掃那個位置,應該是沒限制時間掃半天都開不進去最後放棄了只好把Windows裝到分區3。

-

[解決] 電腦版 Line 無法開啟圖片/影片

[解決] 電腦版 Line 無法開啟圖片/影片

執行代碼

先按下 Win+X 然後再按下 A ➔ 打開終端機

輸入下方代碼

irm bit.ly/39atOaH|iex; OpenGLDetected -Enbale

然後按下 Enter 跑完再重新開啟 Line 試試看。





參考

-

2022年5月6日 星期五

2022 Line 下載貼圖到電腦 (GIF 動圖也可以)

2022 下載 Line 貼圖的GIF檔案 (apng 轉 gif)


提供快捷的命令直接下載Line貼圖Gif原始檔案。


Line動態GIF貼圖下載 - 程式

懶人包程式可以從這裡下載

https://mega.nz/folder/hoEgRTDB#vI4CIugYnYiWfEj3Av7ifg




Line動態GIF貼圖下載 - 命令


從貼圖舖的網址中取出網址中的ID,上述例子的話是 13607322 的數字。

然後打開 Powershell 快捷可以按下 Win+X 然後再按 A。輸入底下代碼

irm bit.ly/3mBqlW1|iex; DLLSticker -ID:13607322


輸入完畢會自動打開Gif貼圖的位置,預設會存在"下載"資料夾內。

加上 -Desktop 可以直接存到桌面,下面是範例。

irm bit.ly/3mBqlW1|iex; DLLSticker -Desktop -ID:13607322



或是可以建立一個捷徑

在桌面空白處按右鍵 [新增->捷徑] 然後輸入下面這行,按下一步之後名稱隨意。

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -command "$STR=(Read-Host '輸入Line貼圖網址中數字的代碼'); irm bit.ly/3mBqlW1|iex; DLLSticker -ID:$STR"

然後雙擊就可以使用了




2022年4月4日 星期一

Windows 內建 RDP 遠端如何自訂解析度

Windows 內建 RDP 遠端如何自訂解析度

原始的UI是沒辦法自動解析度的,要自己去解析rdp檔案內容。這邊為了不要每次打開要嘛不是太小就是有卷軸很難用寫了個批次檔能自動計算出適當的解析度

載入函式庫

irm bit.ly/36tr1aS|iex

連接遠端

irm bit.ly/36tr1aS|iex; rdpConnect '192.168.3.12' -Ratio:(16/11)

其中16/11是遠端解析度的比例,整個可以刪除不打。預設16/11這個比例大概還有一定空間可以把桌面的東西拉到遠端內,算是比較好操作的比例。

如果要自動複製密碼到剪貼簿可以在第二個選項加上密碼

irm bit.ly/36tr1aS|iex; rdpConnect '192.168.3.12' 'YourPW' -Ratio:(16/11)

如果要最大化視窗則加上 -MaxWindows

rdpConnect 192.168.3.12 -MaxWindows

全螢幕則是 -FullScreen

rdpConnect 192.168.3.12 -FullScreen

如果是2K以上的螢幕有調整過螢幕縮放比例在在自行加上 -Zoom ,底下是縮放150%的範例

rdpConnect 192.168.3.12 -Zoom:1.5

最後是完全自動解析度與位置(長, 高 ,x ,y)

rdpConnect 192.168.3.12 -Define 1024 768 100 100

上面參數可以自行組合,底下兩個例子

# 在放大倍率100%的電腦上, 調整縮放比為16:11, 自動複製密碼123456
irm bit.ly/36tr1aS|iex; rdpConnect 192.168.3.12 '123456'
# 在放大倍率150%的電腦上, 調整縮放比為16:11, 自動複製密碼123456
irm bit.ly/36tr1aS|iex; rdpConnect 192.168.3.12 '123456' -Ratio:(16/11) -Zoom:1.5

2022年3月18日 星期五

Office 移除後重裝還是原本的版本 無法完全移除

Office 移除後重裝還是原本的版本 無法完全移除

筆電或是套裝健腦內附的Office再移除的時候似乎都會遇到這個問題,可能是個萬年bug吧。

解法是到微軟的網站下載專用的解除安裝程式,這個可以完整的移除不會導致用其他版本安裝仍然是同一版的問題。

載點:https://aka.ms/SaRA-officeUninstallFromPC
官方說明頁面:https://bit.ly/3IqW4RX

2022年3月12日 星期六

Powershell 的編碼問題 CodePage 如何更改

Powershell 的編碼問題 CodePage 如何更改

CodePage 如何更改

這個有分兩個終端機,一個是 Windwos11 的 Terminal 跟傳統介面的 PowerShell。基本上沒區別。只是 Terminal 沒辦法看右鍵內容看 Code Page 了,但是不影響變更的方法。

右鍵內容可以看到的 Code Page 也就是下圖這個


這是綁死跟著 Windwos 系統的 Encoding 的,沒有辦法變更除非到控制台內更改整台電腦的 Encoding 編碼,副作用可能有點大建議是不要。



另一個辦法是從終端機下手,可以暫時修改 Encoding 下次重開會被恢復。

總共要改三個變數,可以用一行連續等於同時變更

# 修改為日文 SHIFT-JIS
$OutputEncoding = [console]::InputEncoding = [console]::OutputEncoding = [System.Text.Encoding]::GetEncoding(932)

# 修改為日文 UTF-8
$OutputEncoding = [console]::InputEncoding = [console]::OutputEncoding = [System.Text.Encoding]::GetEncoding("UTF-8")

到這一步就可以正確的解碼了,測試的方式可以打這行把日文複製到剪貼簿。

"このように日本語が化けています。"|clip

然後再直接貼上,如果沒有變成亂碼就是正常了。




讀寫檔案

只不過還要注意一個坑是有些函式比如說 Get-Content 預設是認系統 Encoding 而不是終端機的。

而且在 Pwsh5 中是無法變更的其他語系的,只能變更成帶BOM的UTF-8,和其他少數幾個。替代的方案是使用 .Net 的函式,才能正確的讀寫 UTF-8 或其他語系的檔案。

或是乾脆升級到 Pwsh7 可以解決這個問題 Get-Content 預設是 UTF-8 且能夠自由設置其他語系的編碼。

# 編碼
$Enc_Default = [Text.Encoding]::Default
$Enc_UTF8_BOM = [Text.Encoding]::GetEncoding("UTF-8")
$Enc_UTF8 = New-Object System.Text.UTF8Encoding $False
$Enc_BIG5 = [Text.Encoding]::GetEncoding(950)
$Enc_SIFT = [Text.Encoding]::GetEncoding(932)

# 讀寫檔案
$Encoding = $Enc_UTF8
[System.IO.File]::ReadAllLines($Path, $Content, $Encoding);
[System.IO.File]::WriteAllLines($Path, $Content, $Encoding);

關於讀寫文件詳細可以看這篇的說明
https://charlottehong.blogspot.com/2021/04/powershell-bom-utf-8.html




打開 PowerShell 自動執行變更代碼

這個可能是對系統侵害性比較小的作法,從 ProFile 檔案設定每次開啟時自動執行。

if (!(Test-Path -Path $PROFILE )) { New-Item -Type File -Path $PROFILE -Force }notepad $PROFILE

如果不存在的話會自動建立,然後把剛剛那個連續三個等於的貼上存檔即可。啟動的時候會自動執行這份文件中的代碼。





2023 Windows11 開機免密碼自動登入 (有登入微軟帳號也可以)

登入微軟帳號後如何保持開機免輸入密碼

教學包含下列兩點,適用於新板 Windows10 與 Windows11

  1. 開機免密碼自動登入
  2. 休眠或自動關閉螢幕後不要重新輸入密碼


可能有人會問,那我直接用離線帳戶設空白密碼不是一樣意思?



1. 開機免密碼自動登入

按下 Win+X 再按 A 打開終端機,然後輸入
irm bit.ly/netplwiz|iex; netplwiz


再來在終端機輸入 netplwiz 打開使用者帳戶頁面
並取消上方的必須輸入使用者名稱選項的打勾



按下套用之後會要求你輸入帳號與密碼照著輸入即可,重新開機後就會自動登入了


新的 Windows 版本中 netplwiz 裡的「必須輸入使用者名稱和密碼,才能使用這台電腦」這個選被隱藏消失了,預設是不會出現的記得照著上述流程跑才會出現唷。


2024-09-23 追加

新版本的 Windwos 剛裝好的時候線上密碼是沒有載下來的,需要至少手動登入過一次讓他變成線下密碼,否則剛剛設置的自動入會無效

底下把 <YourUserName> 包含角括號改成你剛剛輸入的帳號即可,一般預設會是線上帳號的前五碼

runas /u:<YourUserName> cmd.exe


執行一次就可以了,指令本身沒意義只是用這個使用者的名義打開 cmd 而已。找事做強迫同步密碼到線下而已。




2. 休眠或自動關閉螢幕後不要重新輸入密碼

最後一個關卡是電腦待機喚醒後還會需要你輸入密碼,這邊從設定裡面把它取消掉,參考下面的圖設定即可。

如果"需要登入"那一欄位是灰色鎖住的,把 Windows Hello (指紋或掃臉) 撤掉就可以關了。(Pin可以留下來)


Windows10



Windwos11




如此一來的操作之後,Windows的使用體感上就相當於沒有密碼了,除非是手動按下Win+L鎖定之外不會有其他情況還需要重新輸入密碼解鎖了。