2017-12-20

Windows 8 / 8.1 / 10 注音輸入法切換問題

Windows 8 以後切換到注音輸入法時, 預設都是 [注音] (ㄅ)
即使將注音輸入法預設鍵盤模式從 [中文模式] 改為 [英數模式]
切換時預設也還是跳為 [注音] (ㄅ)
這個問題相當惱人, 最近找到一個方法, 除了上述這個設定之外
還必須加入以下註冊機碼

Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Keyboard Layout\Substitutes]
"00000404"="00000409"
[HKEY_CURRENT_USER\SOFTWARE\Microsoft\IME\15.0\IMETC]
"Default Input Mode"="0x00000001"

這個註冊機碼也可以下 Command:

reg add "HKEY_CURRENT_USER\Keyboard Layout\Substitutes" /v 00000404 /t REG_SZ /d 00000409 /f
reg add "HKEY_CURRENT_USER\SOFTWARE\Microsoft\IME\15.0\IMETC" /v "Default Input Mode" /t REG_SZ /d "0x00000001" /f

如此一來, 切換到注音輸入法的時候預設就會是 [英數] 而不是注音 (ㄅ)

但是, 預設是注音輸入法的 [英數]
必須用 Shift 切換才會變成注音輸入法的 [注音] (ㄅ)

如果習慣用 Ctrl + Space 切換的人, 用 Ctrl + Space 切換的話仍然是 [英數] 輸入
再 Ctrl + Space 切回來也還是 [英數]
必須用 Shift 切換變成注音輸入法的 [注音] (ㄅ)
之後再用 Ctrl + Space 切換才會是 [英數] / [注音] (ㄅ) 互相切換
而且每個應用程式視窗預設都是如此
對於已經很習慣只用 Ctrl + Space 切換的人來說相當不方便

除此之外還有一個例外
如果是被 UAC 介入的情況下 (無論是否將 UAC 關閉)
程式開啟後仍然是注音輸入法的 [注音] (ㄅ)

如果要強制只使用中文語言:

$LanguageList = Get-WinUserLanguageList
$MarkedLanguage = $LanguageList | where LanguageTag -eq 'en-US'
$LanguageList.Remove($MarkedLanguage)
Set-WinUserLanguageList $LanguageList -Force

2017-12-06

VMWare .vmdk Convert to .vhd / .vhdx

因需要將 VMWare 的 VM 轉到 Hyper-V
祭出 MVMC 3.0 (Microsoft Virtual Machine Converter 3.0)
但因為一些原因只能從 DataStore 直接 Download .vmdk 出來, 不能讓他關機進行 Convert
而直接 Download 下來的 .vmdk 沒有簡單的小程式能直接轉檔
原本微軟有提供一個 Command Line 工具叫 vmdc.exe, 但現在也已經 404 了
查找了一陣子之後發現原來裝好 MVMC 後只要 Import 他的 Module 就能用 PowerShell 來處理了

Printer Spooler Service 持續自動停止, 無法列印

日前發生了一件奇怪的事情 (印表機)
Printer 會自己消失不見, 通常遇到這問題第一個要檢查的就是 Printer Spooler Service
但是將他 Start 了之後, 雖然 Printer 會出現, 但是只要對 Printer 做任何動作
Printer Spooler Service 會自己 Stop, Event Log 中只記錄了 Printer Spooler 意外終止, 沒有其他訊息
而 Printer 又會自己消失, 只留下像是 Fax, Microsoft XPS Document Writer 這種 Printer
即使把 Printer 移除, 再重新安裝的時候 Printer Spooler Service 還是會自己 Stop
查了很久查到微軟的這篇文章
並照做刪除了一些機碼之後再 Reboot 就正常了

Compact VHD / VHDx

有時候你會發現, Dynamic 的 VHD / VHDx 怎麼 Compact 都還是一樣大
一個 100GB 的 VHD 裡面明明只有 20GB 卻無法縮小
在許多年前我就有發現這個問題並自己摸索找到方法解決
只要進行以下步驟就可以縮小了
  1. 以唯讀模式將 vhd  mount 起來
  2. Compact
  3. unmount
  4. 再 Compact 一次
用 PowerShell Script 比較省事, 請參考以下指令照順序做就可以了