2011-12-10 28 views
3

私はデスクトップアプリケーションを書いてWindowsではProgramDataの代替フォルダがありますか?

  • は、Windows 7に存在し、Vistaの
  • ...フォルダを必要としていますが(ストアに設定データ用)、すべてのユーザーに共通しています。
  • アプリケーションは、管理者権限(「ProgramData」のようなもの)なしで、その上にデータを保存できます。
  • が標準です(「C:」、デスクトップなどの別のアプリケーション固有のフォルダを作成したくありません)
  • 「プログラムファイル」はオプションではありません。

適切なフォルダを提案したり、レジストリを使用したりできますか?

答えて

7

「ProgramData」(つまりCSIDL_COMMON_APPDATA/FOLDERID_ProgramData)の下に、インストール時にアプリケーション専用のフォルダを作成することをお勧めします。

すでにご存知のように、CSIDL_COMMON_APPDATAフォルダは標準ユーザーのみが閲覧できます。したがって、インストールプログラムは、必要なアクセスを許可するACLを作成するフォルダーを与える必要があります。

これは、あなたの箇条書きに記載されているすべての基準を満たすソリューションです。

あなたはレジストリに言及しています。すべてのユーザー間で共有され、標準ユーザーが書き込み可能なレジストリの領域はありません。 ACLを使用してレジストリへのより厳格なアクセス権を付与することはできますが、それは実際に行われたことではありません。私はこの可能性についても言及していることを忘れてください!

2

アプリが.NETの場合はCommonApplicationDataを使用してください。GetFolderPathを呼び出して実際の場所を取得できます。

EDIT - コメントどおり:

あなたは正しくセットアップACLに必要 - これはディレクトリの%APPDATA%以下/会社/製品の使用についてhttp://www.codeproject.com/Tips/61987/Allow-write-modify-access-to-CommonApplicationData

+0

IIRCそれのデフォルトACLは読み取り専用にするために、通常のユーザーのために(私が間違っている可能性があります)ですので、あなたがすべき@DavidHeffernanで指定されているように、インストール中にサブフォルダにすべてのユーザーに明示的にアクセス権を与えます。 –

+0

'CommonApplicationData'は、" ProgramData "、CSIDL_COMMON_APPDATA、FOLDERID_ProgramDataと同じものです。 –

+0

@MatteoItaliaあなたは正しいです...これを行う方法に関するサンプルソースへのリンクで答えを更新しました。 – Yahia

0

何を参照くださいする方法についてのサンプルソースコードのために?

+4

%APPDATA%はユーザーあたり –

+0

ああです。いい視点ね! – Nerdtron

1

パブリックユーザーのディレクトリはどうですか?例:C:\Users\Public\LibrariesまたはC:\Users\Public\Documents

これらのフォルダは、Windows 7マシンのいくつかで気づいています。私はそれがいつもそこにあるかどうか分からないが、オプションかもしれない。私はPublic Userのために%appdata%のようなものを期待していましたが、私が見つけた最も近いものはPublic\Librariesでした。

(注意点として、それはC:\Users\Public\Desktopがへの書き込みを管理者が必要です表示されます。)

関連する問題