URAMIRAIKAN

1020のなれの果て (since 2005.6.19)

フォルダリダイレクト環境で、IMEに登録した単語が保存されない

 Windows 7 + Offcie 2010を使っている環境で、この問題が発生したので調査していました。
 移動ユーザープロファイル + フォルダリダイレクトもお約束ですね。

 過去には、

[IME2002]移動ユーザープロファイル使用時にユーザー辞書に単語登録が反映されない
 移動ユーザー プロファイルをサーバー環境にて作成し、クライアントからログオンして IME 2002 の単語/用例登録に単語を登録後に再度ログオンし直したとき、ユーザー辞書ファイルに登録が反映されない場合があります。

Windows XP の移動プロファイルの設定で Application DATA の新しいフォルダへの移動を設定しないとユーザー辞書ファイルが使用できない
 ドメインポリシーにおいて、ApplicationData のリダイレクトを設定する際に、 「ApplicationData の内容を新しい場所に移動する」の設定項目のチェックを外した状態では、リダイレクト先の共有フォルダに IME が使用する「imjp8_1」フォルダが作成されません。この結果、クライアント上で作成したユーザー辞書のデータが保存できません。
 ユーザー辞書を登録しようとすると以下のエラーメッセージが表示されます。
 「ユーザ辞書(リダイレクト先のパス)のオープンに失敗しました」

移動ユーザー プロファイルを使用した場合 IME 2007 および IME 2010 の学習情報が保存されない
 移動ユーザー プロファイルを使用した場合、Microsoft Input Method Editor 2007 (IME 2007) または Microsoft Office Input Method Editor 2010 (IME 2010) のプロパティで [学習情報をファイルに保存する] を有効にしても、Windows に再ログオンすると学習した変換情報が無効になり保存されません。

といった問題があるのは認識していましたが、今回の問題とは違いそうでした。

 とりあえずお客様の環境を調べると、

  1. ユーザー辞書ファイルは"%APPDATA%\Microsoft\IMJP14\imjp14cu.dic"として存在
  2. "%APPDATA%"はフォルダリダイレクトされている
  3. 単語登録はできない(保存されない)
  4. ユーザー辞書ファイルをフォルダリダイレクト対象以外の場所(ユーザープロファイルの中)に移動すると単語登録でき、ログオフ/ログオンしても保存される

 「まずは早く使えるようにしてくれ」と言われていたので、とりあえず上記の4の結果から、ログオンスクリプトで辞書ファイルの場所を移すことにしました。

 サラッと書いたので「こんなのでいいのかな?」と思いつつ、当面の目的は達成。

@ECHO OFF SETLOCAL REM ------------------------------------------------------------ REM IME14 辞書ファイルのレジストリ SET KEY=HKEY_CURRENT_USER\Software\Microsoft\IMEJP\14.0\Dictionaries SET VALNAME=DIC00 REM 辞書ファイルの移動先 SET DATA=%USERPROFILE%\Microsoft\IMJP14\imjp14cu.dic,1 REM 辞書ファイルの既定の場所 SET SOURCEDIC=%APPDATA%\Microsoft\IMJP14\imjp14cu.dic REM ------------------------------------------------------------ REM Windows XPなら何もせずに終了 FOR /f "tokens=3 delims= " %%I IN ( 'ver') DO SET VER=%%I IF "%VER%" == "XP" ( EXIT 0 ) REM (設定済みチェック) 既に完了していたら、何もせずに終了 FOR /F "tokens=3 delims= " %%I in ('reg query "%KEY%" /v "%VALNAME%"') DO SET RESULT=%%I IF "%RESULT%" == "%DATA%" ( EXIT 0 ) REM IME14 辞書ファイルを移動(レジストリ変更) reg add "%KEY%" /v "%VALNAME%" /d "%DATA%" /f mkdir %USERPROFILE%\Microsoft\IMJP14\ REM 既定の場所にファイルが存在している場合はコピー IF EXIST %SOURCEDIC% ( xcopy /D /H /Y /R %SOURCEDIC% %USERPROFILE%\Microsoft\IMJP14\ ) exit 0

 そんなわけで応急処置はしたので、あとは原因を調べないと行けませんね。
 もう少し、この件で引きずられそうです。