質問: "0000410"。次のログオフ/ログインの後、変更はユーザーに表示されます。今私がすでに試したことは、wm_settingchangeや「rundll32.exeuser32.dll、updateperusersystemparameters」コマンドなどのさまざまなwindowsメッセージを送信することです。しかし、これまでのところ有用な結果はありません。ここでアイデアが不足しているので、何百人ものユーザーをログオフ/ログオンさせるのはそれほど素晴らしいことではありません:/私はまた、マウスクリックを自動化することも考えました(たとえば、autoitを使用)が、それは通常、それが何よりも多くの問題を引き起こします。
回答: レジストリの編集に関する知識は非常に限られているため、これを行うべきではありませんが、windowsが提供するメカニズムを使用してください。microsoftは、windowsのほぼすべての機能へのアクセスを可能にするメインプログラミングインターフェイスとして windows powershell を作成しました。残念ながら、言語に関連するpowershell関数のファミリー international settings cmdlets は、windows 8/server 2012でのみ導入され、windows7またはvistaでは使用できません。それでも、msdnの記事で説明されているように、windows7またはvista用のソリューションは存在します。 国際設定のwindows vistaコマンドライン構成 。この手法の使用例は、 コマンドラインオートメーションを使用した地域および言語オプションの国際設定の構成 にあります。これは、基本的に、次のコマンドで特別に作成されたxmlファイルを使用します。control intl.cpl,, /f:"intlsettings.xml" 以下にいくつかのサンプルxmlファイルを示します。現在の言語を変更します<gs:globalizationservices xmlns:gs="urn:longhornglobalizationunattend"> <!--user list--> <gs:userlist> <gs:user userid="current"/> </gs:userlist> <!-- user locale--> <gs:userlocale> <gs:locale name="es-us" setascurrent="true"/> </gs:userlocale> </gs:globalizationservices> キーボード言語を追加<gs:globalizationservices xmlns:gs="urn:longhornglobalizationunattend"> <gs:userlist> <gs:user userid="current" copysettingstodefaultuseracct="true" copysettingstosystemacct="true"/></gs:userlist> <gs:inputpreferences> <gs:inputlanguageid action="add" id="0804:e0200804"/> </gs:inputpreferences> </gs:globalizationservices> キーボード言語を削除します<gs:globalizationservices xmlns:gs="urn:longhornglobalizationunattend"> <gs:userlist> <gs:user userid="current" copysettingstodefaultuseracct="true" copysettingstosystemacct="true"/></gs:userlist> <gs:inputpreferences> <gs:inputlanguageid action="remove" id="0804:e0200804"/> </gs:inputpreferences> </gs:globalizationservices> ソース