6173ef90a5
文件補上 ThinkPad Secure Boot 卡 Ventoy 的處置(0x1A Security Violation)
...
在 REINSTALL.md 補 BIOS 預備區塊、常見坑表格、部署前 checklist;
QUICKSTART.md 常見錯誤表也加一列,避免下次踩到同樣的卡關。
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-04-28 11:49:15 +08:00
2b6ae854f9
新增 REINSTALL.md:重灌完整流程文件
...
涵蓋:
- Stage 0 Mac 端 USB 同步
- Stage 1 目標機開機到第一次自動登入(FirstLogonCommands 6 條 + Setup.ps1 17 段對照)
- Stage 2 User 第一次登入(密碼設定 + 預期看到的桌面樣貌)
- Recovery(自動化失敗時的 Run-Setup.bat 與 _admin-shell.bat 兩條手動路徑)
- 從 Mac 遠端管理(SSH/RDP/WinRM with pypsrp)
- 常見坑列表(追溯到對應 commit 的修正)
- 部署前/後 checklist
2026-04-28 09:03:07 +08:00
a7975343c3
07:在桌面顯示「本機」與「控制台」(Default profile + 已載入 user hive)
...
寫到 HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons
底下的 NewStartPanel + ClassicStartMenu 兩個 key(NewStartPanel 是 Win11 用、
ClassicStartMenu 為相容性也寫一份)。值 0=顯示,1=隱藏。
腳本內保留 5 個內建 CLSID 對照表註解,未來要新增/移除其他圖示
(使用者檔案 / 網路 / 資源回收筒)只需動 $showOnDesktop 陣列。
2026-04-28 08:58:50 +08:00
22e002d444
07-apply-ui-ime-default-profile:除了 Default profile 也套到所有已載入的真人 user hive
...
之前只寫 Default profile NTUSER.DAT,新使用者首次登入會繼承——
但若腳本是在 User 已登入後才被重跑(例如 deploy 後想改設定),
Default 改動不會反映到既存的 User profile,肉眼看不到變化。
把套設定的邏輯抽成 Apply-UiImeSettings function,先寫 Default、
再用 Win32_UserProfile 列出所有非系統 profile,凡是 hive 已載入
(HKEY_USERS\<SID> 存在)的就一併寫進去。production 流程下
User 還沒建立、所以只有 Admin 拿到(無關緊要 Admin 會被隱藏);
re-run 時 User hive 已載入則直接生效。
2026-04-28 08:52:29 +08:00
ff796ff299
16-install-telegram 補上 ACL 修正:grant BUILTIN\\Users RX 整個 package
...
winget 解 portable zip 時,'Telegram\' 內層目錄會 break ACL inheritance,
只剩 Admin/Administrators/SYSTEM,BUILTIN\\Users 沒進去。
即使把 User 加進 Administrators 群組,UAC 雙擊用標準 token 跑時仍被擋,
彈出「無法存取此捷徑所參照的項目,沒有適當的權限」。
修法:winget 裝完之後 icacls /grant BUILTIN\\Users RX 整個 package 目錄樹。
Chrome 沒這個問題(自家 installer 自己處理 ACL),所以只要修 Telegram。
2026-04-28 08:46:56 +08:00
8fdce82737
16-install-telegram 改用 winget machine-wide + 建 Public Desktop 捷徑
...
之前用 Telegram 官方 tsetup.exe 即使加 /ALLUSERS 也會 fallback 到 per-user
(PrivilegesRequired=lowest 寫死),裝到 Admin 的 AppData,User 帳號看不到。
改成:
- winget install --scope machine(用 portable 包,所有 user 都能用)
- 抓實際 Telegram.exe 路徑
- 在 C:\Users\Public\Desktop 建立 Telegram.lnk,User 一登入就看得到
2026-04-28 08:41:39 +08:00
29c6ddf982
unattend.xml:User 帳號建立後加入 Administrators 群組
2026-04-28 08:37:02 +08:00
935cddbbf2
新增 steps/ 拆解版本(每段獨立 .bat 雙擊跑)+ Run-Setup.bat;端對端驗證後修 11 處 bug
...
steps/ 把 Setup.ps1 拆成 18 個獨立步驟(00-17),每段:
- _common.ps1 提供 Log/Section/Set-RegValue/Wait-Network helper
- 各段一個 .ps1 + 同名 .bat(自動 UAC 提權)
- _admin-shell.bat 開一個已提權 cmd,從那裡跑各 .bat 不再被 UAC 問
- RUN-ALL.bat 依序跑 00..17
- _template.bat 全部 .bat 共用樣板
- README.txt 用法說明
從 macOS WinRM 端對端跑過所有 18 段、發現並修:
- 02-rdp-enable-3389:'Remote Desktop' display group 在某些 Win11 SKU 不存在,
改顯式 New-NetFirewallRule + Restart-Service TermService
- 04-winrm-enable:開頭加 Set-NetConnectionProfile -NetworkCategory Private fallback,
避免 winrm quickconfig 在 Public profile 拒絕啟用
- 11-kms-activate:原本 'successful|成功' 正則在 Big5 codepage 下 mojibake 出 '{x,y}',
改用 SoftwareLicensingProduct.LicenseStatus -eq 1 WMI 判斷
- 12-winget-install-chrome:加 --source winget,避開 msstore 憑證錯誤造成的歧義
- 13-remove-windows-ai:拿掉 -AllOptions,顯式 10 個 option 排除 UpdateCleanupCheck
(DISM Cleanup-Image + sfc + MessageBox 在 Session-0 default Yes 觸發 Restart-Computer)
- 14-win11debloat:加 -Sysprep(寫到 Default profile 不撞 HKCU 鎖),
從 config 移除 DisableSearchHistory/DisableSearchHighlights/HideSearchTb
(它們的 reg.exe import 會被「存取被拒」擋住)
- 07-apply-ui-ime-default-profile:補上 IsDeviceSearchHistoryEnabled / IsDynamicSearchBoxEnabled
替代上面從 Win11Debloat 拔掉的兩項
- 新增 00-network-private 步驟把所有 NetConnectionProfile 改 Private
- 全部 19 個 .ps1 加 UTF-8 BOM,避免 CHT Windows PS5.1 fallback ANSI 讀中文 mojibake
- 全部 .bat REM 註解改 ASCII,根除「'券蠶setup.log' 不是內部命令」那種亂碼
Run-Setup.bat:當 unattend.xml FirstLogonCommands 沒成功跑起 Setup.ps1 時,
把這支從 USB 雙擊執行,會 UAC 提權 + 從 USB 重拷 + 跑 + console 即時印 + 收 log
2026-04-28 08:35:48 +08:00
ef9f5d16bc
Setup.ps1 加 WU 暫停/恢復;unattend.xml Order 5 收 stderr 進 log
...
- Setup.ps1 開頭暫停 Windows Update(PauseUpdatesExpiryTime + 停 wuauserv/UsoSvc/BITS),
結尾解暫停 + UsoClient 觸發掃描,避免跟 post-install 搶頻寬/CPU
- Win11Debloat config 從 here-string 改成 hashtable + ConvertTo-Json,
繞開 PowerShell 5.1 ANSI 讀取時 here-string parse 失敗的 case
- Log 函式加 Write-Host,console 視窗能即時看 START/DONE
- unattend.xml Order 5 把 stdout+stderr 全部 redirect 到 firstlogon-runsetup.log,
Setup.ps1 連 parse error 都會留紀錄;Order 3 改空密碼 + 強制改密
2026-04-28 08:35:20 +08:00
b1e5b6912a
unattend.xml 直接以 User(首字大寫)建帳號;Setup.ps1 拿掉 rename-LocalUser
...
把 Order 3 的 net user 命令直接寫成 net user User,省掉「先建小寫 user 再
Rename-LocalUser 改成大寫 User」這個迂迴。Setup.ps1 的 rename-hide-accounts
段同時改名為 hide-admin-account,內容只剩設 SpecialAccounts\\UserList\\Admin=0
這一行——隱藏 Admin 仍然由 Setup.ps1 負責。
文件全部同步:DEPLOY/QUICKSTART/SUMMARY/README/CLAUDE 把「先建小寫再改名」的
bulletproof 解釋與相關段名都拿掉。
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-04-27 13:59:15 +08:00
c84e18bd9d
新增 Setup.ps1(13 段 post-install);FirstLogonCommands 改從 Ventoy USB 拷腳本
...
把分散在 unattend.xml inline 的網路相依步驟(OpenSSH/Telegram/RemoveAI)和
新加入的 10 個 post-install 動作整合進獨立的 Setup.ps1,由 FirstLogonCommands
Order 4 從 Ventoy USB(/ventoy/script/Setup.ps1)掃磁碟複製到 C:\Scripts\,
Order 5 執行。腳本分兩 phase:
Phase 1(不需網路):SSH 22 防火牆、RDP+3389、ICMP Echo、WinRM TrustedHosts=*、
移 OneDrive、關 Cortana/WebSearch、套 UI/IME 預設到 Default profile、user→User
改名 + 從登入畫面隱藏 Admin。
Phase 2(要網路,wait-network 後):OpenSSH Server FoD、KMS 啟用(先試
$InternalKmsServers 後 fallback 公開 KMS)、winget Chrome、RemoveWindowsAI、
Win11Debloat、22 個 UWP 移除、Telegram、刪 Panther 殘留。
每段以 Section 包裝寫獨立 START/DONE/ERR 到 C:\Windows\Temp\setup.log,方便逐段
重跑與排查。
文件全部同步:DEPLOY/QUICKSTART/SUMMARY/README/CLAUDE 都加上 Setup.ps1 的
USB 部署、cp 步驟、Order 表、排查指引。
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-04-27 13:36:13 +08:00
b3329d4889
新增 user 帳號與 OpenSSH Server 自動部署;Telegram 步驟加 log 以便排查無聲失敗
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-04-23 09:59:59 +08:00
3b03f376b7
新增 Telegram 首次登入自動安裝與 Ventoy menu_tip 提示;ProductKey 改用 Win11/10 Pro GVLK
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-04-23 08:47:53 +08:00
e106d749c7
修正兩處實機部署失敗的 XML bug;新增 DEPLOY.md 紀錄本機 USB 部署
...
- 根元素加上 xmlns:wcm / xmlns:xsi 命名空間宣告,否則全檔 wcm:action 無法解析(第 27 行第 9 欄即炸)
- ComputerName 改用 *,隨機後綴改由 FirstLogonCommands 的 Rename-Computer 產生;原本 PC-%RAND:5% 並非 Windows Setup 內建巨集,字面送入導致 specialize 階段 Shell-Setup 失敗
- 同步更正 CLAUDE.md / SUMMARY.md 對 %RAND:5% 的錯誤說明
- 新增 DEPLOY.md:/Volumes/Ventoy 的實際檔案佈局與重建步驟
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-04-22 18:59:35 +08:00
fd795f3d66
改用 Ventoy Auto Install plugin 部署;DiskID 改成 Ventoy 變數避免誤格化 USB
...
- unattend.xml: DiskID 由硬寫 0 改成 $$VT_WINDOWS_DISK_1ST_NONVTOY$$,
防止在 Ventoy 下把 USB 本身當成安裝目標
- ventoy.json: 新增 Auto Install plugin 設定範本
- QUICKSTART.md: 用 Ventoy 流程重寫 USB 佈置與 VM 測試章節
- README.md: 放置位置表新增 Ventoy 路徑為預設
- CLAUDE.md: 新增專案導覽文件,標註 Ventoy-only 前提與 DiskID 變數
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-04-19 10:48:03 +08:00
96ea0d5832
Initial commit: Windows unattend.xml 自動部署範本與文件
2026-04-19 10:30:53 +08:00