トップ回答者
IMEの異常動作により、日本語入力ができない

質問
-
Windows7パソコンから別筐体のWindows10パソコンへプロファイル移行を行いました。
Windows10で移行してきたプロファイルにログインし、メモ帳やOfficeで日本語を入力しようと、[半角/全角]キーを押下しても、日本語入力できません。
--------------------------------
【状況①】
IMEの設定を変更しようと思い、IMEのプロパティを開こうとしたところ、設定ウィンドウが0.5秒ほどで消えます。
そのほか、コントロールパネルなどGUIによる設定変更を行おうとしても、ボタンが反応しません。
【状況②】
「レジストリ番犬ロン」にて確かめたところ、下記レジストリが怪しいです。
HKEY_CURRENT_USER\SOFTWARE\Microsoft\IME\15.0\IMEJP\StyleList
クリックすると「StyleListを開けません。エラーによりこのキーを開けません。詳細:アクセス拒否されました。」と表示されます。
StyleListにアクセス権Everyoneフルコンも適応できません。
移行していないアカウントでは拒否されません。
ログオンスクリプトに下記バッチを仕込んでも適用されませんでした。
subinacl.exe /nostatistic /keyreg "HKEY_CURRENT_USER\SOFTWARE\Microsoft\IME\15.0\IMEJP\StyleList" /grant=Everyone=F
【状況③】
移行したユーザ以外のアカウントでは正常に日本語入力できます。
移行したアカウントに管理者権限を付与すると、日本語入力でき、一般ユーザに戻しても日本語入力できます。
---------------------------------------
グループポリシーで制御できます。
説明いろいろと足りていないと思いますが、お助けてください。
よろしくお願いいたします。
回答
-
チャブーンです。
解決済みということですので、余計なことだと思いますが、administratorsグループであればアクセスできる、という前提で参考情報をお知らせします。
すでにご認識とは思いますが、該当ユーザのNTUser.datハイブをロードし、そのアクセス許可を変更すれば、対応自体はできそうです。「自動的」にやるためには、NTUser.datの位置の認識とか、工夫が必要ですが...
ひとまず何とかなりそうなPowerSHellを紹介だけしておきます。
$HiveName="HKU\<ユーザ名>" $FileName="<ユーザプロファイルパス>\NTUser.dat" $KeyName=".\SOFTWARE\Microsoft\IME\15.0" New-PSDrive -PSProvider Registry -Name HKU -Root HKEY_USERS Reg Load "$HiveName" "$FileName" cd $HiveName
$ParentAcl=Get-Acl $KeyName $Acl=Get-Acl $KeyName\IMEJP\StyleList
$Acl.SetAccessRuleProtection($False,$True)
$ParentAcl.Access|Foreach {$Acl.ResetAccessRule($_)}
Set-Acl $KeyName\IMEJP\StyleList -AclObject $Acl
$Acl=Get-Acl $KeyName\IMEJP\StyleList
$RemoveAcl=Get-Acl $KeyName\IMEJP\StyleList|Where {$_.IsInherited -eq $False }
$RemoveAcl.Access|Foreach {$Acl.RemoveAccessRule($_)}
Set-Acl $KeyName\IMEJP\StyleList -AclObject $Acl
Reg unload "$HiveName"
フォーラムは有償サポートとは異なる「コミュニティ」です。フォーラムでご質問頂くにあたっての注意点 をご一読のうえ、お楽しみください。
- 編集済み チャブーンMVP 2017年2月3日 16:32
- 回答の候補に設定 Hebikuzure aka Murachi AkiraMVP 2017年2月3日 16:54
- 回答としてマーク 栗下 望Microsoft employee, Moderator 2017年2月6日 0:14
すべての返信
-
こちらのフォーラムは企業・組織の IT 管理者や IT サービス事業者などのプロフェッショナル向けで、主に組織内での展開・管理やサーバー機能について取り扱っています。個人所有の PC で発生しているトラブルについては、「Microsoft コミュニティ」の取り扱いとなりますので、そちらで質問された方が良いかもしれません。
ご質問のトラブルについては「Windows7パソコンから別筐体のWindows10パソコンへプロファイル移行」した際に当該レジストリのアクセス権が適切に移行・再構成されていない可能性が考えられます。具体的にはどのような方法でプロファイルを移行されたのでしょう。
Windows 7 から Windows 10 へと移行元と移行先のバージョンが異なるので、(インプレース アップグレード以外の方法で)プロファイルを新しいバージョンの Windows に移管するための(Microsoft で)サポートされる方法は無いはずです。※移動プロファイルに関する記事ですが、例えば https://msdn.microsoft.com/ja-jp/library/jj649079 には
『オペレーティング システムのバージョンごとに、個別のプロファイル バージョンを維持するように Windows を構成します。 これにより、プロファイルの破損など望ましくない予測不能な問題を回避します。』
『ユーザー プロファイルを別のオペレーティング システム バージョンに移行するためにサポートされている方法はありません。』
などの記載があります。【状況③】で書かれているように問題の発生しているアカウントをいったん Administrators グループに追加してサインインすれば、Administrators グループから削除した後も正常に IME が利用できるのであれば、それを回避策として採用するのが現実的かもしれません。
ただしプロファイルの移行に伴い、本件以外に問題が出る可能性は排除できないので、基本的な運用設計(プロファイルを移管する)自体を再検討した方が良いでしょう。
hebikuzure
- 編集済み Hebikuzure aka Murachi AkiraMVP 2017年2月2日 8:41
- 回答の候補に設定 栗下 望Microsoft employee, Moderator 2017年2月3日 5:59
-
ありがとうございます。
お詳しいですねぇ。助かります。
移行元では何も設定は行っておりません。
進展といたしましては、移行先で、
HKEY_CURRENT_USER\SOFTWARE\Microsoft\IME\15.0\IMEJP\StyleList
のアクセス権限の所有者がTrustedInstallerになっておりました。
下記コマンドで所有者を変更しました。
subinacl.exe /keyreg HKEY_CURRENT_USER\SOFTWARE\Microsoft\IME\15.0\IMEJP\StyleList /setowner=Administrators
下記コマンドでAdministratorsに所有者が変更されたことも確認しました。
subinacl.exe /keyreg HKEY_CURRENT_USER\SOFTWARE\Microsoft\IME\15.0\IMEJP\StyleList
しかし、レジストリエディタからStyleListのアクセスは拒否されます。
--------------------------
少し話は変わりますが。
移行ユーザでサインインした状態で、ユーザ切り替えし、administratorアカウントでサインインします。
そして、レジストリから移行ユーザのSIDの、subinacl.exe /keyreg HKEY_CURRENT_USER\SOFTWARE\Microsoft\IME\を削除。
そして移行ユーザでログインすると、StyleListにアクセスでき、なおかつIMEが正常に動作しました。(自動で削除したレジストリが生成された)
移行ユーザに一度もログインせず、Administratorで作業を完結させるべく、administratorユーザで移行プロファイルのSIDを探し、IMEのレジストリを削除するコマンドを実行したのですが、「指定されたレジストリキーまたは値が見つかりませんでした」と表示されました。
現在このような感じです。
-
チャブーンです。
解決済みということですので、余計なことだと思いますが、administratorsグループであればアクセスできる、という前提で参考情報をお知らせします。
すでにご認識とは思いますが、該当ユーザのNTUser.datハイブをロードし、そのアクセス許可を変更すれば、対応自体はできそうです。「自動的」にやるためには、NTUser.datの位置の認識とか、工夫が必要ですが...
ひとまず何とかなりそうなPowerSHellを紹介だけしておきます。
$HiveName="HKU\<ユーザ名>" $FileName="<ユーザプロファイルパス>\NTUser.dat" $KeyName=".\SOFTWARE\Microsoft\IME\15.0" New-PSDrive -PSProvider Registry -Name HKU -Root HKEY_USERS Reg Load "$HiveName" "$FileName" cd $HiveName
$ParentAcl=Get-Acl $KeyName $Acl=Get-Acl $KeyName\IMEJP\StyleList
$Acl.SetAccessRuleProtection($False,$True)
$ParentAcl.Access|Foreach {$Acl.ResetAccessRule($_)}
Set-Acl $KeyName\IMEJP\StyleList -AclObject $Acl
$Acl=Get-Acl $KeyName\IMEJP\StyleList
$RemoveAcl=Get-Acl $KeyName\IMEJP\StyleList|Where {$_.IsInherited -eq $False }
$RemoveAcl.Access|Foreach {$Acl.RemoveAccessRule($_)}
Set-Acl $KeyName\IMEJP\StyleList -AclObject $Acl
Reg unload "$HiveName"
フォーラムは有償サポートとは異なる「コミュニティ」です。フォーラムでご質問頂くにあたっての注意点 をご一読のうえ、お楽しみください。
- 編集済み チャブーンMVP 2017年2月3日 16:32
- 回答の候補に設定 Hebikuzure aka Murachi AkiraMVP 2017年2月3日 16:54
- 回答としてマーク 栗下 望Microsoft employee, Moderator 2017年2月6日 0:14