2021/4/15(Thu) 22:24:12|NO.92609
沢渡さんが仰る通り、設定ファイルの有無または初期設定済みのフラグを設定ファイルなどを出力して起動毎にチェックするのが一番手っ取り早くて無難な方法だと思います。
その中でも種類がありますが、
・アプリケーションフォルダ
・AppDataフォルダ
・レジストリ
のいずれかが一般的だと思いますね。
一応それぞれの特徴を書くと
・アプリケーションフォルダ
PCに複数のユーザーがいる場合、最初に起動したユーザーのみを判別可能。別のユーザーが初めて起動しても既に他のユーザーが初期設定済みなら初回起動判定はできない。
アプリケーションフォルダを削除したときに同時に消せるのでちょっとした個人製作ソフトに多くみられる方法。
・AppData
場所はC:\Usres\ユーザー名\Appdata\Local\、HSPからはdirinfo(0x1001c)で取得可能 (CSIDL_LOCAL_APPDATA)
ユーザーごとのフォルダなので、PCに複数のユーザーがいる場合、各ユーザーがそれぞれ最初に起動したときに初期設定が可能。ただしユーザーごとに設定を保存するので、アプリケーションで共通な設定は保存できない。
アプリケーションを削除してもシステムが勝手に消してくれることはないが、システムへの影響は少ないので放置でも問題は起きにくい。
・レジストリ
システムが保有する領域に書き込む。Win32APIを使用するため扱いが難しい。なるべくユーザーから設定の内容を隠ぺいしたいときに使う。(ライセンスやほかのアプリケーションへの関連付けなど)
アプリケーションを削除してもシステムが勝手に消してくれることはないので、個人的にはインストラー・アンインストーラーがあるアプリケーションで使用するべきかと。
昔はINIファイルでフォルダに保存するよりも推奨されていたようですが、昨今ではシステム管理領域であるレジストリを無駄に汚さないためにも避けられているイメージ (例えば.NetアプリケーションはAppdataにXMLで設定を保存しています)
といった感じでしょうか。
また、アプリケーションフォルダとAppdataフォルダでもINIファイルで読み書きするなら、自分でファイルを読み込む命令を作らなくともWin32APIで簡単に内容の読み書きができます。(Get/SetPrivateProfileString)
|