3

アプリケーションに構成可能な設定を追加することを考えています。最も簡単な方法は、外部ファイルまたはWinレジストリ(Win専用アプリ)だと思います。

どちらの方法が良いでしょうか?

十分な権限を持たないユーザーは、構成ファイルを作成/書き込みできない可能性があるのではないかと思いました。また、レジストリの場合、今日のウイルス対策では、キーを追加/編集/削除できますか?または、特定のキーのみを監視しますか?

また、誰かがvc ++で構成設定(純粋なwin32)を管理するためのclass / libを知っている場合は、それを投稿してください。

4

5 に答える 5

5

私の知る限りでは:

十分な権限を持たないユーザーは、構成ファイルを作成/書き込みできない可能性があります

権限に関係なく、ユーザーの「ホーム ディレクトリ」または「アプリケーション データ」ディレクトリ内にファイルを作成できる必要があります。通常、これらのディレクトリは書き込み可能である必要があります。

今日のウイルス対策では、キーを追加/編集/削除できますか?

私のウイルス対策がレジストリ操作を妨害するのを見たことがありません。レジストリで疑わしいことをしていない限り、おそらく問題ありません。

どちらの方法が良いでしょうか?

それは好みの問題です。テキストファイルの方が優れていると思います-設定の移行が簡単になります。アンインストール後にジャンクを残さないでください。

また、誰かがクラス/ライブラリを知っていて、vc ++で構成設定を管理する場合

Qt 4 のQSettings 。また、JSON などの構成言語を確認したり、設定に lua を使用したり (Qt 4 を使用するよりもやり過ぎではない)、任意の XML ライブラリを取得したりすることもできます。また、レジストリを直接操作したり、iostreams や stdio を使用して構成ファイルを作成したりすることは難しくありません。また、必要に応じて、独自の構成ライブラリをいつでも作成できます。

于 2010-05-27T15:53:46.630 に答える
2

「Windows のみ」は制限または制限緩和ですか? クロスプラットフォームであることを気にしない場合は、試してみることをお勧めしますboost::program_options。このライブラリは、コマンドライン、環境変数、および INI ファイルを介してプログラム オプションをサポートします。Boostprogram_optionsはまた、さまざまなパーサーを と非常にうまく統合して接着しvariables_mapます。これは、オプションとその値の間のマップとして表示できます。

于 2010-05-27T16:58:22.993 に答える
1

単純なものについては、レジストリを使用することもできます。ただし、構成ファイルには多くの利点があります...アプリのさまざまな用途に合わせていくつかの異なる構成を保存/ロードできる、ユーザー間またはマシン間で設定を共有または移行するのが簡単になるなどです。

ファイル ルートを使用する場合は、Boost のプロパティ ツリー ライブラリをお勧めします。

http://www.boost.org/doc/libs/1_41_0/doc/html/property_tree.html

それはかなり良い構文を持っています:

boost::property_tree::ptree properties;

std::string name = properties.get<std::string>("blah.name");
int score = properties.get<int>("blah.score");

properties.put("blah.name", "Inverse");
properties.put("blah.score", 1000);

また、xml などのさまざまな形式の読み取りと書き込みもサポートしています。

于 2010-05-27T17:05:16.580 に答える
0

新しいデフォルトは、安全に書き込み/読み取りができるユーザーのフォルダーの下にあるユーザーの「AppData」フォルダーに構成ファイルを書き込むことだと思います。

設定を保存するために単純な XML 形式のファイルを使用しています。ただし、INI ファイル タイプのフォーマットを使用できます。

于 2010-05-27T15:50:48.257 に答える
0

構成ファイルを Application Data ディレクトリに保存するSHGetFolderPath()と、CSIDL_COMMON_APPDATAすべてのユーザーが構成を表示できるようになります。を使用するCSIDL_LOCAL_APPDATAと、1 人のユーザーのみが構成を表示できます。レジストリは、必ずしもすべての構成データを保存する場所ではありません。

于 2010-05-27T15:51:50.377 に答える