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()をつかって、自前のレジストリ操作関数をつくったよ、もぅ。

タグ:

MFC VC6 レジストリ
最終更新:2009年06月25日 18:00
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。