今、ユーザー設定みたいなのが使えるものを作っているんですが、そういう設定をどうソフトに保存していいのか分かりません。メモ帳のように他のところに保存する方法は分かるのですが、こういう場合はどうすればいいのでしょうか。お願いします。
SaveSetting,GetSettingなどを使います。
HKEY_LOCAL_USERだけでなくHKEY_LOCAL_MACHINEなどにも書き込む場合は,
APIを利用する必要があります。
また,レジストリではなく初期化ファイルを使う場合は,
同じくAPIを利用するか,自分でOpen〜Closeを使って読み書きすることになります。
個人的には、iniファイルを使う事をお勧めします。
レジストリもiniの読み書きもここのVB
API 技術関連にあります。
レジストリにするならYuoさんの言うとおり
VBの関数を利用した方が楽です。
>HKEY_LOCAL_USER
HKEY_CURRENT_USERでしたね。
それはともかく,
iniファイルは基本的にユーザーごとの設定ができないので,お勧めできません。
#NTFSのストリームを使えばできますが……。
レジストリを使うと,ユーザーごとに設定を簡単に分離してくれます。
レジストリにしろiniファイルにしろ,ユーザーに依存しない設定とユーザーに依存する設定があります。
・ユーザーに依存しない設定
ハードウェアの情報やインストールディレクトリ情報など。
レジストリではHKEY_LOCAL_MACHINE\SOFTWAREに,
iniファイルでは%WINDIR%や実行ファイルのあるディレクトリに,
それぞれ保存します。
・ユーザーに依存する設定
カスタマイズ情報や最近使ったファイル情報など。
レジストリではHKEY_CURRENT_USER\SOFTWAREに,
iniファイルでは%USERPROFILE%\Application Dataに,
それぞれ保存します。
SaveSettingでは,
HKEY_CURRENT_USER\SOFTWARE\VB and VBA Program Settings\[appname]\[section]
に保存されます。
#[]内はSaveSettingの名前付き引数の値に置換。
ユーザー毎にフォルダをつくっておいて
その中にiniを保存というのではだめなんでしょうか?
レジストリ使うならアンインストールプログラムもつくって
ゴミをちゃんと消してくださいね。
>ユーザー毎にフォルダをつくっておいて
>その中にiniを保存というのではだめなんでしょうか?
その場合,NTFS使っている場合はアクセス権の設定をする必要があります。
#セキュリティの問題。
さらに,ユーザー名を変更したときに同じユーザーであることを識別する必要が出てきます。
HKCUは,HKEY_USERS\[sid]のaliasですから,同一ユーザーである限り設定が保持されます。
また,Administratorsに所属するアカウントでも,他のユーザーのHKEY_USERSを覗くことはできません。
YuOさんの言うとおりにやってみたところ、どうやらうまくいったようです。皆様、ありがとうございました。
勉強になりました。
ツイート | ![]() |