どうもミツシマです。


今回はWIndows10にてデスクトップ言語バー(IMEツールバー)の表示・非表示をレジストリから設定出来ないか検証してみました。

検証OS:Windows10 LTSB1503・1703・1809


結論としてはレジストリから設定出来るが、その場合レジストリ変更後にサインアウトし、再度サインインしないと反映されませんでした。
エクスプローラの再起動とかで反映出来るかな〜なんて思ってましたが無理でしたね。。。。orz



改めてですが、今回設定する項目のGUI画面は下記の通りです。
※Windows10 1703の画面です。(バージョンが違うと多少違います。)

スクリーンショット 2019-05-28 5.27.54
スクリーンショット 2019-05-28 5.28.08



対応するレジストリ値は以下となります。

1.「使用可能な場合にデスクトップ言語バーを表示する」
キー: HKEY_CURRENT_USER\Control Panel\Desktop
値: UserPreferencesMask
種類: REG_BINARY
データ: 9e 3e 07 80 12 01 00 00 (表示する)
9e 3e 07 80 12 00 00 00 (表示しない)


2.「言語バーアイコンをタスクバーで表示する」
キー: HKEY_CURRENT_USER\Software\Microsoft\CTF\LangBar
値: ExtraIconsOnMinimized
種類: REG_DWORD
データ: 0 (表示しない)
1 (表示する)


3.「言語バー」
キー: HKEY_CURRENT_USER\Software\Microsoft\CTF\LangBar
値: ShowStatus
種類: REG_DWORD
データ: 0 (デスクトップ上でフロート表示する)
3 (表示しない)
4 (タスクバーに固定する)


「2」と「3」に関してGUI画面と順番が逆ですが、意味があります。
上から順番に「表示」が有効でないと下の設定は特に意味がないです。
当たり前ですが、「2」と「3」を表示するに設定していても、そもそも
「使用可能な場合にデスクトップ言語バーを表示する」が有効でないと何も表示されません。
同じように「3」の言語バーも「2」が有効でないと意味がないです。
そのためこの順序で記載しました。


ここで検証していたところ、「使用可能な場合にデスクトップ言語バーを表示する」のレジストリ値のデータがWindows10 LTSBとWindows10 Pro(1703や1809)で違っていました。
※おそらく、Windows10のバージョンによる違いかな〜〜〜と
それでも共通している箇所は下6桁「01 00 00」や「00 00 00」の部分なのでここが表示・非表示に対応している模様です。


レジストリがわかったところでいつものようにこれをコマンドで追加(変更)してみました。

Add-IMEBar.ps1
#レジストリ値を変数に代入
$RegData1 = reg query "HKCU\Control Panel\Desktop" /v "UserPreferencesMask"

try{
    If($LASTEXITCODE -ne 0){
        Throw
    }
}catch{
    Write-Host "エラー!レジストリ値が存在しません。処理を中断します。"
    Exit
}


#必要なデータを取り出し
$RegDataArray = -split $RegData1
$BinData =  $RegDataArray[5]
#Write-Host $BinData
$SpilitBinData = $BinData.Substring($BinData.Length - 6,6)
#Write-Host $SpilitBinData

#レジストリ値を比較して必要があれば、レジストリ値をセット
If($SpilitBinData -eq "010000"){
    Write-Host "IME言語バーは表示される状態です。処理は不要です。"

}else{
    Write-Host "IME言語バーは表示されない状態です。処理が必要です。"

    $SpiltBinData2 = $BinData.Substring(0,10)
    #Write-Host $SpiltBinData2
    $RegData2 = $SpiltBinData2 + "010000"
    #Write-Host $RegData2
    #「使用可能な場合にデスクトップ言語バーを使用する」追加
    reg add "HKCU\Control Panel\Desktop" /v "UserPreferencesMask" /t REG_BINARY /d $RegData2 /f

    #「言語バーアイコンをタスクバーで表示する」追加(0=表示しない,1=表示する)
    reg add "HKCU\Software\Microsoft\CTF\LangBar" /v "ExtraIconsOnMinimized" /t REG_DWORD /d 1 /f

    #「タスクバーに固定する」追加 (0=デスクトップ上でフロート表示する,3=表示しない)
    reg add "HKCU\Software\Microsoft\CTF\LangBar" /v "ShowStatus" /t REG_DWORD /d 4 /f
}



この例だと言語バーアイコンをタスクバーで表示し、かつ、タスクバーに固定しています。
他の設定を適用したい場合は適宜変更して下さい。
※自分なりにエラー処理等を入れていますが、コードとしては不格好なのかも。。。。。


個人的にはサインアウト・サインインしなくても反映されるようにしたかったですがギブアップです。。。


最後にファイルは下記にリンクしておきます。
Add-IMEBar.ps1
スポンサードリンク