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 比較省事, 請參考以下指令照順序做就可以了

2017-11-06

2017.11 Japan Tokyo

東京使用外語看診醫院(中文、英文)

11/10(五) Day1 渋谷 DisneyStore 買票、迴轉壽司
  • 07:00 出發
  • 08:00 到機場
  • 10:00 桃園機場2航廈 JL0802
  • 14:00 到著 成田空港2ビル

2017-09-28

AD User Account 鎖定時的解鎖方式 Lock / Unlock

當 User 密碼輸入錯誤超過 GPO 中設定的次數限制時
AD 會將該 User Account Lockdown 避免被暴力破解等可能的風險
但其實多半的原因都是 User 改密碼後忘記, 或因為有記住的密碼未清除的問題造成
先前都是用微軟官方提供的 這個程式 直接在 DC 上面去處理 Unlock

但最近發現如果在非 DC 上面, 用 Runas 的方式去跑這個程式時
Unlock 選項會是灰色的, 無法進行解鎖
但如果透過 PowerShell 下指令卻又可以解鎖, 揪竟是為什麼真是令人費解
無奈下只好寫了一個 PowerShell Script 來處理這件事情
以下為程式碼, 只要修改最前面的 $Script:SearchDomain 就可以適用於各環境
即使是跨 TrustDomain , 只要有權限都可以用

2017-07-18

Windows 2000 實體機轉 Hyper-V 的虛擬化作業

有一台老掉牙的 Windows 2000 Server
由於上面的系統已經沒有人會維護了, 而該系統能轉的功能也都已經轉到別的系統上
但仍有一些資料無法轉出, 需要在上面查詢, 故不能下線也不能壞掉
但是也無法移機, 因為那個系統早已沒有簽維護, 廠商也早已不支援那古代的版本
所以唯一避免他一步一步走上硬體損壞的絕路之前能做的僅有虛擬化一途

由於 Windows 2000 不支援 Volume Shadow Copy, 所以不能線上用 Disk2vhd 來轉
如果從光碟開機進一般的 WinPE 等工具系統, 也因為 RAID Card Driver 的關係沒辦法讀到磁碟
在這困難重重的情況下還好仍有一線生機

雖然自己常用的是 Hyper-V, 但對 VMWare 也是不排斥的
此時祭出 VMware vCenter Converter Standalone 來進行線上移轉是再適合不過了
畢竟在那個年代, VMWare 絕對是虛擬化技術的王者
果然一切順利地轉到 VMWare vSphere 免費板上面去一點問題也沒有

為了利用便宜的即時移轉、複寫等功能, 我們的虛擬化平台 95% 都是 Hyper-V
所以接下來的挑戰就是再從 VMWare 轉到 Hyper-V
在這裡吃足了苦頭, 以下是實戰說明:

2017-05-04

效能監視器 Performance Monitor 基本 Counter 設定

Performance Monitor 可以用來監控一個系統的效能狀況
但因為 Counter 太多常常搞不清楚究竟要用哪些
以下筆記列出常用基本 Counter, 可以快速瞭解系統最基本的狀況

微軟指出, 為了避免 Performance Monitor 影響被監視主機的效能表現
最好使用其他機器透過網路進行遠端 Monitor

Performance Monitor 大概長這樣:

2017-05-03

Google Chrome Extension: IC 之音 AOD 聆聽幫手 (IC975)

Google Chrome Extension:  IC 之音 AOD 聆聽幫手 (IC975)
第一次寫 Chrome Extension
因為想把 IC 之音 AOD 音檔抓下來, 發現可以從原始碼直接看到下載連結
但是如果一個節目一個節目去看原始碼實在太花時間, 所以研究了一下寫出這個 Extension
已經太久沒寫 Code, 所以應該可以寫得更簡潔的地方並沒有處理, 能用就好

以下是原始碼:

manifest.json

2017-04-26

利用 Let's Encrypt 來佈署 Remote Desktop Gateway

本教學利用 Let's Encrypt 來佈署 Remote Desktop Gateway
2018.08.29 更新重寫

有關取得 LetsEncryptWinSimple 的方式請參考以下這篇文章的前半部
Exchange 2016 採用 Let's Encrypt 憑證的方法與 Auto Renew

Auto Renew 的部份:


$PublishedURL = "RDG.Contoso.com"
$LetsEncryptWinSimplePath = "C:\LetsEncryptWinSimple.v1.9.11.2\"
$PFXPath = "C:\ProgramData\win-acme\httpsacme-v01.api.letsencrypt.org\"

cd $LetsEncryptWinSimplePath
$DateTimeString = Get-Date -format yyyyMMdd_HHmmss
$TranscriptLog = (Get-Item -Path ".\" -Verbose).FullName + "\Logs\" + ("CertRenew_" + $DateTimeString + ".log")
start-transcript -path $TranscriptLog

2017-04-12

以 Command 管理 WiFi Profile

View wireless adapter settings
Netsh WLAN show interfaces

View wireless network profiles saved on your PC
netsh wlan show profiles
Netsh WLAN show profiles interface="Interface_Name"

Recover network security key from any wireless profile stored on your PC
netsh WLAN show profile name="Profile_Name" key=clear

Stop connecting automatically to a wireless network out of range
Netsh WLAN set profileparameter name="Profile_Name" connectionmode=manual
Netsh WLAN set profileparameter name=" Profile_Name" connectionmode=auto

Delete wireless network profiles stored on your PC
netsh wlan delete profile name="TempGuest"

Export and import wireless network profiles
Netsh WLAN export profile key=clear folder="Folder_Path"
Netsh WLAN export profile name="Profile_Name" key=clear folder="Folder_Path"
Netsh WLAN add profile filename="File_Path.XML"
Netsh WLAN add profile filename="Path_With_Filename.xml" Interface="Wireless Network Connection" user=current

2017-04-07

資料夾存在卻無法刪除的問題

在 File Server 發生刪除資料夾時顯示 "The system could not find the file specified."
這些資料夾的共同特性是名稱最後有一個空白
並且這些資料夾也無法被重新命名
資料夾內容的安全性 ACL 顯示:

在這裡找到的刪除的語法:

2017-04-06

長檔名/路徑在 Windows 10 / Windows Server 2016 獲得解決

長檔名/路徑預設長度只能在 260 字元以內, 可經過 Policy 修改來支援 260 字元以上
Windows 10 可利用修改 Local Computer Policy
Windows Server 2016 可利用 GPO

位置: Computer Policies > Administrative Templates > System > Filesystem
項目: Enable Win32 long paths

當然, 這個設定在 Windows 10 / Windows Server 2016 才有作用

DC 非 Windows Server 2016 可以更新 Administrative Templates (.admx) 來設定
Administrative Templates (.admx) for Windows 10 and Windows Server 2016

下載解開後複製到 SYSVOL\domain\Policies\PolicyDefinitions 就行了 (放這裡才會 Replica)

也可以直接改註冊機碼:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem]
"LongPathsEnabled"=dword:00000001

DFS-R 某些檔案不複寫的問題排除

DFS 是分散式檔案系統
DFS-R 是分散式檔案系統的複寫功能

一直以來我都覺得 Domain 環境下 DFS 相當好用
可以給 User 一個固定的連線 UNC Path, 即使 File Server 異動也不會影響到 User 既有的習慣
再加上可以使用複寫功能, 能達到備援的目的 (備援不是備份, 切記!)

但使用一陣子過後總會偶爾發現就那某些檔案無法被複寫
原因不明, 不管是改檔名或複製一份, DFS-R 都完全無動於衷, 完全沒有想要複寫的意思
剛開始, 覺得問題一定是出在 DFS-R 機制上面, 微軟一定有 Bug
在 C:\Windows\Debug 有 Dfsr00xxx.log 的 Log File 可以查看
發現不能複寫的檔案會顯示這樣的訊息
UsnConsumer::TombstoneOrDelete LDB Deleting ID Record
UsnConsumer::TombstoneOrDelete ID record deleted from USN_RECORD
但是完全沒有幫助, 找不到任何相關資訊

接著往檔案資訊去想, 在檔案資訊的 Attributes 中看到了不同之處


2017-03-14

指定 VDI Golden Image VHDX 到 SSD Tier

$Path = "D:\VDI"

$Files = ((Get-ChildItem -path $Path -R) | where {$_.Name -like "*.vhdx"}).FullName
$SSDTier = (Get-StorageTier | where {$_.MediaType -eq 'SSD' -and $_.Size -gt 0} | Select FriendlyName).FriendlyName
foreach ($File in $Files) {
    Write-Host
    Write-Host "Move ""$File"""
    Write-Host " to  ""$SSDTier"""
    Write-Host
Set-FileStorageTier -FilePath $File -DesiredStorageTierFriendlyName $SSDTier
}

2017-03-02

Software List Remote (Enhanced Version)


' ----- 參數設定開始 -----

ADDomain = "contoso"
TargetFilePath = "D:\Info\Data\*.dbd"
GapString = "=====Gap====="
InfoString = "=====Info====="

' 除厝模式: (派送用戶端執行應設為 0)
' 0: 不顯示訊息
' 1: 顯示錯誤訊息
DebugMode = 0

' 資料取得方式 (此參數會在 DB Record 中註記):
' 1: Local - Client Push 檔案給 Server 讀取
' 2: Remote - Server 主動連線取得資料產生檔案
InfoDataType = 2

' 如果資料取得方式是 2: Server 主動連線取得資料產生檔案
' 此處給予客戶端有可能使用的管理員帳號密碼
AuthUserNameString = "contoso\Administrator;administrator;administrator;"
AuthPasswordString = "password;P@$$w0rd;P@$$P@##w0rd;"

' ----- 參數設定結束 -----

2017-02-24

Windows 10 Language Packs 多國語言字型問題

Windows 10 對多國語言的支援比較完善了
不過只安裝語言包對於使用非 Unicode 撰寫的程式仍然顯示不良
因為預設沒有諸如 Big5、GB2312 等的地區字型
所以還必須要再安裝補充字型 (Language Capabilities) 才行

語言包安裝指令
dism /Online /Add-Package /PackagePath:D:\langpacks\zh-tw\lp.cab

安裝補充字型前必須確定你的 Windows 10 電腦能連到 Microsoft Update

再進 Settings -> System -> Apps & features -> Manage Optional Fetures 裡面
確認將各語言的補充字型 (Supplemental Fonts) 手動選取安裝進去

或者你也可以使用 PowerShell
dism /online /Get-Capabilities
以下列出常用的: 繁體中文、簡體中文及日文的補充字型安裝 Powershell Command

2017-02-15

憑證格式 .pfx 轉 .pem

憑證格式 .pfx 轉 .pem: http://support.citrix.com/article/ctx106028
安裝 OpenSSL for Win32 http://slproweb.com/products/Win32OpenSSL.html
要先裝 Visual C++ 2008 Redistributables (搭配 Win32OpenSSL 或 Win64OpenSSL)
Microsoft Visual C++ 2008 Redistributable Package (x86) http://www.microsoft.com/en-us/download/confirmation.aspx?id=29
Microsoft Visual C++ 2008 Redistributable Package (x64) http://www.microsoft.com/en-us/download/details.aspx?id=15336

以下是轉換操作步驟

2017-02-03

上海 迪士尼度假區 旅遊記事 (十) 總結

這次因為是離開後才想寫旅遊記事的
所以並沒有各個景點、設施項目都拍很多照片
以寫遊記的觀點來看相當可惜啊, 但其實在當下少了拍照的延遲, 整個遊興還算是愜意
常常覺得外出遊玩就好好玩, 拍照只是輔助記憶

古時候一捲底片才 36 張, 還不保證張張成功 (傻瓜相機也是常常拍失敗的)
出遊頂多帶個五、六捲底片, 每一次快門都很珍惜地使用
現在數位相機記憶卡隨便就能拍個三、四千張, 反而花費了大量的時間在拍照、重拍
常常還開啟錄影模式去拍些山、海、動物
說真的回到家之後真得有拿出來好好地重溫舊夢嗎?
這兩者之間的取捨, 大家就自己決定吧

一個樂園好不好玩, 除了樂園設施及工作人員的水準以外, 遊客的水準也相當重要
我不會說上海迪士尼樂園的遊客水準很差, 事實上我認為已經相當不錯了
但仍與日本有相當大一段的差距, 除了排隊以外就是遊玩時不管他人肆意拍照影響品質了

在上海迪士尼度假區遇到了幾位日本遊客, 即使是出國, 櫻花妹們仍穿著水手服!!
真是讓我有他鄉遇故知(?)的感覺
以後如果還有可能去到上海出差或旅遊
與其去市區景點, 我可能還是會選擇來迪士尼吧
但如果可以, 我還是比較想去日本迪士尼, 遊客水準還是遊玩興致好壞的重要關鍵

在這裡要先重新提一下 上海 迪士尼度假區 旅遊記事 (三) 抵達  提到的世界商店
商品真是非常非常多, 不需要入園就可以買到


上海 迪士尼度假區 旅遊記事 (九) 設施

上海迪士尼度假區號稱亞洲最大的迪士尼樂園
但其實樂園內走起來感覺比東京迪士尼樂園小得多
各主題之間走兩、三步就到了, 真得是非常非常近
像我就在寶藏灣和夢幻世界之間來回走了不下十幾趟
為的就是要看看小熊維尼歷險記的排隊人潮有沒有減少

以下就我有實際乘坐、觀賞的遊樂設施提供個人主觀的心得
不一定有照片, 畢竟乘坐遊樂設施的當下就是要好好玩樂啊!

上海 迪士尼度假區 旅遊記事 (八) 餐飲

這趟到上海迪士尼度假區的旅程, 有親自食用的餐飲如下:

米奇大街
  • 米奇好夥伴美味集市
    • 天黑要離開樂園之前來這邊吃東西, 人非常多, 很難找到座位, 但如果不怕冷的話可以到戶外座位區, 那裡很有機會有位子, 這一份是什麼名稱我已經忘了, 總之是滷雞腿配上麵條, 口味不錯, 就是麵條的口感比較不適應, 介於鍋燒意麵和一般麵條之間那種密度的口感, 雞腿挺入味, 有附一杯飲料, 購餐的時候發現有趣的事情, 很多人買餐點都不要飲料, 不知原因為何, 很想跟店員說那他的飲料給我吧!

2017-02-02

上海 迪士尼度假區 旅遊記事 (七) 排隊

當我買完商品, 辦理好商品寄存再開始遊蕩時, 已經九點半左右, 滿坑滿谷都是人了
由於沒吃早餐, 所以先到 小米大廚烘焙坊 買個麵包點心吃吃吧

沒有記價錢, 好像 35 RMB 左右吧, 挺好吃的
喜歡蝴蝶酥之類零食的人一定很喜歡
接著見到了很不一樣的遊樂習慣

上海 迪士尼度假區 旅遊記事 (六) 土產

相較於琳瑯滿目坑殺荷包的商品, 土產相對較為稀少
我將食品類可以作為伴手禮送給親朋好友的商品通稱為土產

在米奇大街右側, 橘色圈圈的地方就是土產的商品販賣店

上海 迪士尼度假區 旅遊記事 (五) 商店

如前篇所言, 由於在 09:00 前入園的關係, 被擋在商店大街無法進入園區
索性先開始逛逛商店, 看看這裡有些什麼不一樣的商品
一周以前在香港機場轉機的時候就發現出發層的 Disney Store 竟然有賣 Duffy 周邊商品
這個在日本是只有在 TDS (Tokyo Disney Sea) 園區內才能見到的
但是香港機場就直接大剌剌地陳列各種 Duffy 相關商品進行販賣, 令我相當吃驚
而到了上海迪士尼度假區內的商店街我更驚訝了, Duffy 的商品根本稀鬆平常

在米奇大街的左側, 綠色圈圈的地方就是主要的商品販賣店

上海 迪士尼度假區 旅遊記事 (四) 入園

上海迪士尼度假區入園要經過三道關卡, 參考下圖

紅色圈圈是第一道關卡, 在這裡必須檢查包包
橘色圈圈是售票處, 如果沒有事先買票的話就來這裡買, 也可以在這裡將一日券升級成季票
藍色圈圈是第二道關卡 (驗票口)
黃色圈圈是大型行李箱的寄放處, 一個行李箱寄放的金額是 70 RMB
黃色圈圈同時也是商品寄存的提領處, 這個稍後再介紹

上海 迪士尼度假區 旅遊記事 (三) 抵達

因為之前去過很多次東京迪士尼度假區
所以有鑑於排隊等開門的人潮, 早上 06:30 不到就下樓請櫃台幫忙叫車
在中國有專門叫車的 App 可以使用, 但基於外來客只待幾天而且工作忙碌下
就沒有特別去研究怎麼下載安裝以及使用了, 反正櫃台可以幫忙叫車

早上交通通暢一點都不會塞車
車程約 15 公里, 只花了 15 分鐘就到了, 車資是 34 元, 合台幣不到 200 元
抵達的地方是在上一篇 上海 迪士尼度假區 旅遊記事 (二) 功課 中大地圖的左下角處
大地圖的左下角我沒有擷取高解析度, 以下是這個區域的小解析度圖


2017-01-24

上海 迪士尼度假區 旅遊記事 (二) 功課

去迪士尼之前必定要先做功課, 免得去到現場不知從何玩起, 浪費太多時間
而做功課首先就要去 上海迪士尼度假區官方網站 找園內地圖來看
自己希望找到的是那種在入園處提供給遊客取用
有標註遊樂設施與介紹、餐廳、街頭小店、洗手間等
簡單說就是跟東京迪士尼度假區一樣的那種地圖

雖然官方網站有提供一個 超高解析度的上海迪士尼度假區地圖
但是必須要放大縮小、移來移去, 而且只有地標名稱而已, 沒有上面提到的標示
官方沒有的話網路搜尋看看, 結果不要說 Google 找不到, 連百度也找不到

上面這個不太方便的地圖我花了不少時間用螢幕截圖再用小畫家拼貼起來
有需要可以自己下載回去看看, 因為他似乎是相當接近正確比例的地圖
所以對於腳程計算應該會有幫助, 也可以存在手機裡面方便使用
不過這個地圖並不是我最推薦用於規劃攻略的地圖
我後面還會附上這趟拿的園內地圖所掃描下來的檔案, 比較適合用來做功課使用


上海 迪士尼度假區 旅遊記事 (一) 契機

工作的關係到上海出差
周間努力加班工作到半夜換來了周末一天的休息時間
於是決定去上海迪士尼走走瞧瞧
看看跟東京迪士尼度假區 TDL、TDS 有什麼不一樣

本篇文章記錄上海迪士尼度假區的地理位置
以及自身會前往之契機與簡單交通介紹

2017-01-20

Nested Virtualization on Windows (Hyper-V) Server 2016

Windows Server 2016 的 Hyper-V 開始支援 Nested Virtualization (巢狀虛擬化)
據說以前不提供這個功能是因為微軟認為不需要
但 Windows Server 2016 要開始支援 Container, 所以不得不提供巢狀虛擬化的功能

要使用巢狀虛擬化, 必須滿足/留意以下條件:

  • 實體 Virtualization Host 的 CPU 必須支援 VT-x 、EPT
  • Guest Hypervisor VM 必須啟用 vCPU Virtualization Extensions
  • Guest Hypervisor VM 提供給 Guest VM 的網卡必須啟用 MAC Address Spoofing
  • Guest Hypervisor VM 必須為 Generational 2
  • Guest Hypervisor VM Configuration Version 必須為 8.0
  • Guest Hypervisor VM 不可使用 Dynamic Memory
  • Guest Hypervisor VM 無法進行 Runtime Memory Resize