4

OK、本当の告白が最初です。たぶんそれは私だけかもしれませんが、Windowsマシンの「プログラム設定のベストプラクティス」は、Microsoftのデータアクセス戦略よりも変更されたように感じることがあります。私はまだXPを実行していて、途中のどこかで、MSがアプリのすべてのデータを保存する場所などを「見つめている」だけでした。コーディングしたすべてのマシンを制御したので、実際には問題ではありませんでした。

今、私は「野生の」アプリを書いていて、Win98SE以降をサポートしています。私はこれらすべてにもう一度注意を払わなければなりません。:-\

主に新しいコンピューターへの簡単な移行を行う必要があるため、アプリの設定にレジストリを使用することはあまり好きではありません。INIファイルを使用することを好み、タスクに使用する古いINIコンポーネントがいくつかあります(Raize、いつもの)。他のサードパーティコンポーネントがこれをより簡単に/より簡単にするのであれば、私は他のサードパーティコンポーネントへの提案を受け入れます。

基本的に、アプリの設定を保存する必要があります(オプション設定の記憶など)。

私が読んだ: ユーザーが構成可能なアプリケーション設定を保存するためのレジストリとINIファイル
HKEY_LOCAL_MACHINEの代わりにプログラム設定を保存する場所は?
win32プログラムはファイルをどこに保存する必要がありますか?
プログラムの構成ファイルとログファイルをWindowsに保存するのに最適な場所は?

...少なくともこの質問では私だけではありません...; )
(わずかに異なる角度からではありますが、繰り返しの質問の一部についてお詫びします)。

%APPDATA%/ MyProgramを使用して、そこにすべてのデータを保存できるように聞こえますが、これはWin98SE以降のすべてのWindowsフレーバーで普遍的に正しいですか?そうでない場合、最善のアプローチは何ですか、そしてそのアプローチはいつ生まれましたか?

私が本当に探しているのは、正直なところ、この問題を解決する最も簡単な方法です。すべてのインスタンスで「マイプログラムのデータフォルダ」を取得するための、(可能であれば)シンプルで簡単で信頼性の高い方法が必要です。 。上記はそれを達成しますか?

4

5 に答える 5

5

「Delphi プログラムを Vista 対応にする」に進み、一番下までスクロールして、「アプリケーション データを保存する場所は?」を探します。

関数 GetRoamingUserAppDataPath : 文字列; //少なくとも IE 4 (および Win95 以上) があれば動作します。

于 2009-03-28T02:46:37.797 に答える
3

%APPDATA% は Win95 には存在しないようです。Win98 または Win95 w/IE4 で利用可能なSHGetSpecialFolderPathを使用します。

于 2009-03-28T01:53:22.183 に答える
2

これまでに得られた回答は良好ですが、質問にまとまりのないものを混在させていると思いますので、質問に完全に回答することはできません。

あなたの質問のタイトルは述べています

INI タイプの設定および/または DB ファイル

これらは2つのまったく異なるものになる可能性があります。ユーザーごとのファイル、すべてのユーザーに共通であるが読み取り専用のファイル、およびすべてのユーザーが操作できる共通のファイルを区別する必要があります。

最初のカテゴリは簡単です。CSIDL_APPDATAまたはCSIDL_PERSONALフォルダーのいずれかの下にある適切なディレクトリを使用します。

2 番目のカテゴリも簡単です。標準 (制限付き) ユーザーは正しい場所に書き込むことができないため、適切なアクセス許可で実行する必要があるセットアップ プログラムによってファイルを適切な場所にインストールするだけで済みます。

ただし、最後のカテゴリは難しいものです。すべての Windows インストールに、すべてのユーザーが書き込み可能であると想定できるディレクトリが存在しないからです。特に、ユーザー アカウントがロックダウンされているビジネス環境では、ネットワーク内のサーバー上のどこかにあるユーザー ディレクトリに対してのみ、ユーザーがローカル ディスクへの書き込み権限をまったく持っていない可能性があります。そのため、プログラムのそのデータの場所を取得して、それが機能することを確認する簡単な方法はありません。すべてのプログラムとすべてのユース ケースで再検討する必要がある可能性があります。

おまけとして、ファイルをローミング プロファイルに入れてドメイン内のすべてのマシンで使用できるようにするかどうか、またはファイルがマシン固有のものであるかどうかも常に考慮する必要があります。

私が提供する 1 つのヒントは、マシン上のユーザー間でデータを共有する必要があるアプリケーション用に、Paradox や Access ファイルなどのデスクトップ スタイルのデータベース ファイルから離れることです。ロックダウンされたアカウント/マシンでマルチユーザー データを保持できるのは、実際の (ローカル) データベース サーバーのみです。

于 2009-03-28T12:35:43.933 に答える
0

すべてのバージョンで機能するかどうかについてコメントすることはできませんが、.ini ファイルが正しい答えであることは確かです。XP がレジストリを使用するように言ったとき、私はそれを試しました。社内展開では、設定をマシンからマシンにコピーする必要があることがわかりました。次の更新では、.ini ファイルに戻されました。

レジストリ全体のビットは、彼らがベスト プラクティスとして隠したかった著作権侵害対策だったと思います。

于 2009-03-28T01:47:51.807 に答える
0

設定を保持するために %APPDATA% の xml ファイルを使用する傾向があります。xml は C# の ini よりも簡単だからです。とにかく、%APPDATA% は安全な賭けのようです。

98SE がこれをサポートしているかどうかは、私にはわかりません。

于 2009-03-28T12:17:33.633 に答える