2011-12-18 24 views
2

私のプロジェクトでは/Dataにコンテンツフォルダがあります。私がビルドするときと、ビジュアルスタジオのインストールクリエータを使用したときにも、ファイルがそこにあります。プログラムを実行すると、これらのファイルへのアクセスが拒否されます。プログラムにファイルへのアクセス権を与える方法を教えてください。インストールされたwpfアプリケーションのデータファイルへのアクセスが拒否されました

ファイルはexeと同じディレクトリにあります。私がデバッグ出力フォルダでファイルを実行しただけで、インストールされたときに正常に動作し、プログラムファイルに入ります。

答えて

1

@Lolcoderの答えをさらに拡張します。私のアプリケーションでは、私はEnvironment.GetEnvironmentVariable("ALLUSERSPROFILE")を使い、私のアプリケーションディレクトリをそのディレクトリに追加します。次に、Windowsインストーラでカスタムコミットアクションを使用して、ファイルをプログラムディレクトリからAll Usersディレクトリに転送するバッチファイルを実行します。

md "%ALLUSERSPROFILE%\YourApplicationName" 
md "%ALLUSERSPROFILE%\YourApplicationName\Data" 
cacls "%ALLUSERSPROFILE%\YourApplicationName" /E /P BUILTIN\Users:F 
copy "C:\Program Files\YourApplicationName\Data\*.*" "%AllUSERSPROFILE%\YourApplicationName\Data" 

これにより、ユーザー固有の設定ではないアプリケーションレベルの設定が可能です。

1

Windowsでは、プログラムはファイルにアクセスできません。プログラムが実行されると、通常、プログラムを実行しているユーザーのアクセス権が継承されます。フォルダにアクセスするためのNTFSアクセス許可がインストールによって正しく設定されていないようです。どのようなアクセス権が必要なのか、つまり読み書きするか、ユーザーが/ dataフォルダーにその権利を持っているかどうかを確認します。

ビジュアルスタジオで動作し、binディレクトリの.exeを呼び出すと、にはこれらのフォルダに必要な権限があるため、正しく機能すると思います。ユーザーまたはユーザーが、プログラムファイルディレクトリに同じNTFSアクセス許可を持っていない可能性があります。

他の可能性は、ロードしているデータファイルがインストーラによってデプロイされていないためロードできないことです。

+0

展開されています。パスは正しく設定されています。メモ帳でデータファイルを開いたり、保存したりできます。インストーラのフォルダにアクセス権を設定するにはどうすればよいですか? –

+0

.msiファイルをお持ちの場合、Orcaというツールを使用して.msiファイルを編集し、フォルダのアクセス許可を変更することができます。 –

1

プログラムファイルにデータファイルを保存することはできません。そのためのAppDataフォルダがあります。プログラムファイルは基本的にセキュリティ上の理由からのみ読み込まれます。

関連する問題