試験運用中なLinux備忘録・旧記事

はてなダイアリーで公開していた2007年5月-2015年3月の記事を保存しています。

infファイルを使用せずに非対話的にレジストリの操作を行う

今更かもしれないが、非対話的にレジストリを操作(追加/置換/削除)する方法として、infファイルの他に、レジストリエディタ(regedit)のコマンドラインオプションを使用して操作することもできるということが分かった。非対話的に追加したいレジストリがあるときに便利。
なお、このレジストリエディタコマンドライン操作はWindows版と互換らしい。*1

  1. レジストリのエクスポート
  2. レジストリファイルの内容
  3. 取り込み(追加/置換)
  4. レジストリの削除
  5. Wine環境の初期設定で使用する

レジストリのエクスポート

書き出す範囲をレジストリエディタで指定することで、簡単に書き出せる。
左のツリー階層のフォルダ右クリックメニューから書き出すか、「レジストリ」メニューからの書き出しでダイアログの中で範囲を指定する。

レジストリファイルの内容

例えば、「Wine上のフォントについての設定」のフォント置換設定のレジストリを書き出すと、下のようになる。
[任意]ファイル名: font-replace-ipamona-msgothic_msmincho.reg

REGEDIT4

[HKEY_CURRENT_USER\Software\Wine\Fonts\Replacements]
"MS Gothic"="IPA モナー ゴシック"
"MS Mincho"="IPA モナー 明朝"
"MS PGothic"="IPA モナー Pゴシック"
"MS PMincho"="IPA モナー P明朝"
"MS UI Gothic"="IPA モナー UIゴシック"
"MS ゴシック"="IPA モナー ゴシック"
"MS 明朝"="IPA モナー 明朝"
"MS Pゴシック"="IPA モナー Pゴシック"
"MS P明朝"="IPA モナー P明朝"

レジストリファイルを手書きする場合、その中に日本語があるときは必ずShift_JISエンコーディングで保存する。改行コードはCR+LFでもLFでもよい。
書き出した複数のレジストリファイルを結合することもできるが、2つ目からのファイルは「REGEDIT4」の部分を除いたものを追加する。

取り込み(追加/置換)

レジストリファイルを取り込むには、regeditの引数にレジストリファイルを指定するだけでよい。複数指定することもできる。

$ regedit font-replace-ipamona-msgothic_msmincho.reg

もし対象の設定値が存在する場合、自動的にレジストリファイルの値で上書きされる。
上のレジストリファイルを取り込むと、${WINEPREFIX}/user.reg

[Software\\Wine\\Fonts\\Replacements]
"MS Gothic"="IPA \x30e2\x30ca\x30fc \x30b4\x30b7\x30c3\x30af"
"MS Mincho"="IPA \x30e2\x30ca\x30fc \x660e\x671d"
"MS PGothic"="IPA \x30e2\x30ca\x30fc P\x30b4\x30b7\x30c3\x30af"
"MS PMincho"="IPA \x30e2\x30ca\x30fc P\x660e\x671d"
"MS UI Gothic"="IPA \x30e2\x30ca\x30fc UI\x30b4\x30b7\x30c3\x30af"
"\xff2d\xff33 \x30b4\x30b7\x30c3\x30af"="IPA \x30e2\x30ca\x30fc \x30b4\x30b7\x30c3\x30af"
"\xff2d\xff33 \x660e\x671d"="IPA \x30e2\x30ca\x30fc \x660e\x671d"
"\xff2d\xff33 \xff30\x30b4\x30b7\x30c3\x30af"="IPA \x30e2\x30ca\x30fc P\x30b4\x30b7\x30c3\x30af"
"\xff2d\xff33 \xff30\x660e\x671d"="IPA \x30e2\x30ca\x30fc P\x660e\x671d"

が書き加わる(既存の値がある場合は置き換わる)。日本語部分は自動的にUnicodeのコードに処理されるため、対応を調べたりする必要はない。

レジストリの削除

レジストリキー(エディタ左側のフォルダ)単位で削除ができる。対象のキーを/Dオプションの引数として指定する。

$ regedit /D "HKEY_CURRENT_USER\Software\Wine\Fonts\Replacements"

Wine環境の初期設定で使用する

Wine環境の作成時にレジストリ設定を行う際に、infファイルを使用する代わりに簡単に初期設定を行うことができる。Wineのバージョン1.0の時点では、(環境変数WINEPREFIXで指定される)Wine環境が存在しない場合でも、何かのアプリケーション(Wine関係のツールを含み、regeditも例外ではない)を起動したときに自動的にWine環境の作成が行われるため

$ regedit [レジストリファイル].reg

をいきなり実行してもよく、フォント置換などでバックスラッシュ文字の処理などを行っていたような作業もなくなる。
本当に何も環境がない状態からこれ1つだけで設定が行われる。

使用したバージョン:

  • Wine 1.0

*1:regedit "/?"」のヘルプの中に書かれている