4

私は以下を含む製品を構築しています

  • ローカルマシンにデータをキャッシュするWindowsサービス、
  • ユーザープロセスは、そのデータの読み取りと独自のデータの書き込みを行います。
  • 次に、サービスはそのデータをサーバーに書き戻します。

すべてのユーザーが共有して読み取り/書き込みができるように、このためのデータファイルをどこに配置する必要がありますか?このソフトウェアは、デスクトップがかなりロックダウンされていることがある企業環境で動作するため、たとえば、一部のユーザーにはC:\ProgramFilesへの書き込み権限がありません。

C:\ Documents And Settings \ All Users \ Application Data \は適切な候補ではないと思います。デフォルトでは、管理者とパワーユーザーのみがここに書き込みアクセス権を持っていると思います。

各ユーザーのアプリケーションデータフォルダーを使用することはできますが、さまざまなユーザーが各マシンを使用できるため、これは少し面倒です。したがって、共有場所が1つしかない場合は簡単になります。

私はC#.net 2005で開発していますが、それはおそらくあまり関連性がありません。

4

1 に答える 1

3

残念ながら、本当の選択肢はありません。SHGetSpecialFolderLocation を呼び出して c:\users\public\AppData へのパスを取得する必要があります (これは、上記でリンクしたフォルダーの名前ですが、Vista および Windows 7 の場合があります)。次に、独自のアプリ フォルダーを作成する必要があります。その中に。次に、セキュリティ API を使用して、作成したフォルダーの ACL を変更する必要があります。

システムには、複数の管理者以外のユーザーが同じファイルを読み書きできるデフォルトの ACL を持つフォルダーはありません。

c:\users\public\AppData が最も近いです。ここでアプリケーション フォルダーの ACL を変更するのが最善の方法のようです。もちろん、ACL の変更に頼ると、フォルダは実際にはどこにでも作成できます。しかし、それはシステム管理者を驚かせ、おかしなセキュリティ ホールにつながる可能性があります。

于 2010-01-20T10:29:59.950 に答える