「MFCでレジストリを使うとき注意すべきこと」の編集履歴(バックアップ)一覧はこちら
追加された行は緑色になります。
削除された行は赤色になります。
MFCってどうやってレジストリ使おう、といろいろやるんだが、制約がきつい。
次の1点は意識しておこう。
MFCでレジストリを使うとき、アプリケーション名(application name)を変更するには。
結論。そんな方法は無い。
CWinApp::SetRegistryKey の説明をMSDNライブラリで引くと、
こんなところにできますよー、と
「キーには次の形式で格納されます。HKEY_CURRENT_USER\Software\<company name>\<application name>\<section name>\<value name>。」
という説明がある。
で、どこになるんだろう、どうやって設定するんだろうと調べまわるが、application nameは記述が見当たらなかったってわけ。
悪あがきした挙句、衝撃の真実を目にしてしまうわけ。
<company name> : SetRegistryKey で設定する。
<application name> :出来上がった実行プログラムの名前(○×△.exe の「○×△」)
<section name> : GetProfileInt、GetProfileString、WriteProfileInt、WriteProfileString のパラメータlpszSectionに設定
<value name> :GetProfileInt、GetProfileString、WriteProfileInt、WriteProfileString のパラメータlpszEntryに設定
Application name部分は、自分自身のファイル名を引いているようだ。
ビルドした後にexeをリネームしたら、見事にその名前どおりに application name部分の違うエントリーが出来上がっていた。
つまりexeの名前をかっこよくひょこひょこリネームするのはいいが、レジストリもちゃんとそれにあわせておかないといけない。
別のサポートプログラムなんか作って設定しようとは、考えないこと。
これをやっていたから泣く羽目になった。
RegOpenKeyEx()・RegQueryValueEx()、RegCreateKeyEx()・RegSetValueEx()をつかって、自前のレジストリ操作関数をつくったよ、もぅ。