5

私のアプリケーションでは、既知の予測可能な場所に「グローバル」(つまり、ユーザー固有ではない) の設定を保存する必要があります。

アプリケーションをどこからでも (管理者ではなく標準ユーザーとして) 実行できるようにしたいと考えています。これには、さまざまな場所からの複数のコピーが含まれ、保存された構成ファイルの読み取りと書き込みが可能です。

データには、1 人だけでなく、すべての標準ユーザーに読み取りおよび書き込みアクセス権を付与する必要があります。

それを念頭に置いて、ここに記載されている 4 つのオプションは不適切です: http://msdn.microsoft.com/en-us/library/bb206295(VS.85).aspx#ID0E1BA

では、私の代替手段は何ですか?

私のアプリケーションは C++ で書かれており、Windows 専用です。Windows XP 以降をサポートする必要があります。

ありがとう。

編集:

明確にするために、複数のインスタンスによって引き起こされる競合状態は無視してください。この質問は、データを保存する場所に関するものです。次のような適切な場所が見つかりません。

  1. 予測可能 (例: %APPDATA%\Foo は「予測可能な」パスですが、残念ながらユーザー固有です)
  2. グローバル (例: %PROGRAMDATA%\Foo はグローバル パスですが、残念ながら作成ユーザーのみが書き込みアクセス権を持っています)
  3. アクセス可能 (標準ユーザーは、指定されたディレクトリに新しいファイルを作成できる必要があります。これは、システム上のすべてのユーザーに適用されます)
4

5 に答える 5

2

CSIDL_COMMON_APPDATAそれが適切でないと判断した場合(おそらくCSIDL_COMMON_APPDATAデフォルトでよいが、管理者が場所を変更できるようにしたい場合)、インストーラーに何かを書き込みHKLM\SOFTWARE\<your app subkey>、共有ディレクトリの目的のパスを示すように指示することができます。データ。

HKLM レジストリにポインターを配置する代わりに、共有ディレクトリへのポインターを持つプログラム ディレクトリに構成ファイルを配置することもできます。定義上、プログラム ディレクトリは、インストーラーが書き込み可能である必要があり、管理者 (構成の変更を担当する場合があります) が書き込み可能であり、ユーザーが読み取り可能である必要があります。そのため、標準ユーザーは既知の場所 (プログラム ディレクトリ内の HKLM サブキーまたは構成ファイル) を読み取って、すべての標準ユーザーが書き込み可能なディレクトリへのポインターを取得できます。

共通ディレクトリを設定するもの (インストール プログラムまたは構成モジュール) は、共通ディレクトリの ACL が標準ユーザーの書き込みに対して適切に設定されていることを確認する必要があります。

于 2009-09-18T16:30:13.317 に答える
1

ユーザープロファイルディレクトリのパブリックフォルダを試してください。

CSIDL_COMMON_DOCUMENTS

編集:または使用します

CSIDL_COMMON_APPDATA

ただし、可能であれば、AuthenticatedUsersグループに権限を設定してください。

于 2009-09-18T15:47:29.917 に答える
1

おそらくCSIDL_COMMON_APPDATAを探しています。IIRCは、Windowsロゴ認定のいずれかを取得する場合にも適しています。要件に合わない場合は、MSDNのこのリンクを確認してください。そこで、ニーズに最適なものを見つけることができます。
幸運を。

于 2009-09-18T16:02:24.650 に答える
1

c:\ FixedDataForYourProgramなどの固定ディレクトリ名だけを使用することはできませんか?

XPでこれを行います。Vista / Win7でこれをプログラムで試したことはありませんが、Vistaで標準ユーザーとしてログインすると、rootの下にディレクトリを作成するのに問題はありません。

これはあらゆる種類のルールに違反していると思いますが、それは簡単です。シンプルが好きです。

于 2009-09-18T16:04:58.837 に答える
-2

オプション:

  1. ファイルへのアクセスを制御するファイルMutex
  2. 設定を保存するデータベース
  3. 並行性を処理できる設定を格納するWebサービス
于 2009-09-18T15:37:21.097 に答える